Visual Basic - Días hábiles

Life is soft - evento anual de software empresarial
 
Vista:

Días hábiles

Publicado por Diego Fernando Múnera R. (80 intervenciones) el 08/09/2005 21:17:48
Hola colegas sera que me pueden ayudar con una función recursiva para saber en un rango de fechas cuantos días son habiles.

Ej:

Fecha inicial : 01/09/2005
Fecha final : 30/09/2005

¿ N° de días habiles (Solo de lunes a viernes) ?

Gracias por su colaboración.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Días hábiles

Publicado por ivan (463 intervenciones) el 09/09/2005 01:18:38
No tengo cabeza ni tiempo como parq diseñar el algoritmo así por ahora pongo solo una vaga idea...

Considera que el inicio de semana será domingo y el fin será sábado

Obten el día de la fecha de inicio, si acaso es un laborable... cuéntale hasta el viernes... y adelanta como fecha de inicio el siguiente domingo... (cantidad 1)

Saca la fecha final... si acaso es día laborable cuenta desde el lunes hasta ese día... y retrasa la fecha final hasta el sábado... (cantidad 2)

Ahora haz una resta de fechas y las divides entre 7... del resultado.. que a fuerzas te tiene que dar un entero, le sumas las otras 2 cantidades que obtuviste en los pasos anteriores (cantidad 1 + cantidad 2 + resultado de división) y listo....

Lo único que tendrías que validar es restarle a tus días laborales las fechas que no son laborables... como por ejemplo un 25 de diciembre.... (esos días ya tendrías que definirlos...) pero claro.. esa resta la vas a hacer siempre y cuando ese día fuere de lunes a viernes... y estuviere dentro de tu rango inicial...

Espero te sirva la idea.... si acaso existe otro método más fácil... ponlo para saber...

SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días hábiles

Publicado por EGV (385 intervenciones) el 09/09/2005 17:05:09
Tal vez haya otra forma mas sencilla
* cargas en un ArrayMeses(12,1) el numero del mes y la cantidad de dias totales del mismo, que siempre son iguales todos los años, salvo febrero que cambia en un dia cada 4 años
* en un combo colocas los meses y en otro los dias de la semana y le pides al usuario que indique cual es el dia de la semana que corresponde al 1(lunes, martes, etc)
* con ese dato te mueves hasta el primer sabado y le vas sumando 7, hasta un numero que no sea mayor a 31
* conociendo el sabado te mueves un dia hasta el domingo y haces lo mismo, le sumas 7 hasta que llegue a un numero que no sea mayor a 31, todo esto es para saber cuantos sabados y domingos hay en ese mes
* con este dato y sabiendo que cantidad de dias totales tiene cada mes, simplemente le restas y te dara los dias laborables.

por ej Julio el 1 es viernes luego el sabado es 2 y el domingo 3
los sabados de Julio son 2,9,16,23,30 y los domingos 3,10,17,24,31, o sea en total 10 dias, luego 31 - 10 = 21 dias laborables.
Si lo queres sofisticar un poco podrias cargar en otro array el dia que corresponde al 1 de cada mes, como para asegurarte que el usuario no coloque para Julio como 1er dia el domingo, por ej.
suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días hábiles

Publicado por cesa acosta (19 intervenciones) el 09/09/2005 20:16:04
es lo mas facil del mundo chamo mira y aprende....

Dim fecha As String
Dim fecha1 As String
Dim dia As String
Dim count As Integer
fecha = "01/09/2005"
fecha1 = "30/09/2005"
fecha1 = DateAdd("D", 1, fecha1) 'agrego un dia adicional para la cuenta ya veraz porque
'cuando lo hagas
While Format(fecha, "short date") <> Format(fecha1, "short date")
dia = Weekday(fecha)
If dia <> "1" And dia <> "7" Then
count = count + 1
End If
fecha = DateAdd("D", 1, fecha)
Wend
Label1.Caption = count
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días hábiles

Publicado por manuel (1 intervención) el 19/09/2014 17:06:02
y si deseo imprimir las fechas con formato mes/dia/año, quitando los dias sabados y domingos, si pueden contestar lo mas rapido posible seria genial,. gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Días hábiles

Publicado por Juan Gilberto (323 intervenciones) el 20/09/2014 22:22:44
Solamente tienes que cambiar la linea :
While Format(fecha, "short date") <> Format(fecha1, "short date")

por:
While Format(fecha, "mm/dd/yyyy") <> Format(fecha1, "mm/dd/yyyy")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar