Como contar cuantos Lunes, Martes, miercoles... tiene un año en VB?

30/09/2011 - 11:57 por nestergpd Reyes | Informe spam
Estoy intentando buscar información para saber como contar el número
de Lunes, Martes, Miércoles... que tiene un año.
El problema es que no encuentro ninguna solución, he visto como
calcular el número de días entre fechas y cosas similares, pero no doy
con la solución a este problema.

¿Alguien sabe como se puede hacer esto?

Gracias!
 

Leer las respuestas

#1 Leonardo Azpurua
30/09/2011 - 16:14 | Informe spam
"nestergpd Reyes" escribió en el mensaje
news:
Estoy intentando buscar información para saber como contar el número
de Lunes, Martes, Miércoles... que tiene un año.
El problema es que no encuentro ninguna solución, he visto como
calcular el número de días entre fechas y cosas similares, pero no doy
con la solución a este problema.

¿Alguien sabe como se puede hacer esto?



Hola,

Estuve jugando un poco con una solución que no fuera recorrer todos los días
del año incrementando un contador si es el día de la semana que estamos
buscando.

Para comparar, hice justamente eso.

De momento, tengo estas dos funciones:

Public Function DiasEnAño1(ByRef año As Integer, wkDay As Integer) As
Integer
Dim dt As Date, da As Integer, primerDia As Integer
dt = DateSerial(año, 1, 1)
While weekDay(dt) <> wkDay
dt = dt + 1
Wend
Debug.Print dt,
' dt = dt - 1
da = DateSerial(año + 1, 1, 1) - dt ' + 1
Debug.Print da,
da = da \ 7
DiasEnAño1 = da
End Function

Public Function DiasEnAño2(ByRef año As Integer, wkDay As Integer) As
Integer
Dim n As Integer, dt As Date, ds As Integer
n = 0: ds = 0
dt = DateSerial(año, 1, 1)
Debug.Print dt,
While Year(dt) = año
If weekDay(dt) = wkDay Then
n = n + 1
End If
dt = dt + 1
ds = ds + 1
Wend
Debug.Print dt,
Debug.Print "ds="; ds,
DiasEnAño2 = n
End Function

La primera trata de calcularlos en función de la cantidad de días
transcurridos. La segunda hace exactamente lo que dije que no quería hacer:
es torpe, pero el resultado es exacto (comparé los resultrados con la
cantidad actual de lunes en veinte años de calendarios).

La primera no funciona.

En general, la cantidad de dias cualquiera de la semana que hay en un año es
52 más 1 si el 1/1 o el 1/2 son ese día de la semana.

De todas maneras voy a dedicarle un rato a tratar de entender por que la
primera implementacion no funciona.


Salud!

Preguntas similares