para saber que dia de la semana es una fecha determinada, la formula que aplicamos en este algoritmo la podreis encontrar en internet.
CODIGO:
Private Sub Command1_Click()
Dim modulo_mes_regular(1 To 12) As Integer
Dim modulo_mes_bisiesto(1 To 12) As Integer
Dim dias_semana(0 To 6) As String
Dim dia, D, M, A As Integer
' tabla de módulos de mes para año regular modulo_mes_regular(1) = 0
modulo_mes_regular(2) = 3
modulo_mes_regular(3) = 3
modulo_mes_regular(4) = 6
modulo_mes_regular(5) = 1
modulo_mes_regular(6) = 4
modulo_mes_regular(7) = 6
modulo_mes_regular(8) = 2
modulo_mes_regular(9) = 5
modulo_mes_regular(10) = 0
modulo_mes_regular(11) = 3
modulo_mes_regular(12) = 5
'tabla de módulos de mes para año bisiesto modulo_mes_bisiesto(1) = 0
modulo_mes_bisiesto(2) = 3
modulo_mes_bisiesto(3) = 4
modulo_mes_bisiesto(4) = 0
modulo_mes_bisiesto(5) = 2
modulo_mes_bisiesto(6) = 5
modulo_mes_bisiesto(7) = 0
modulo_mes_bisiesto(8) = 3
modulo_mes_bisiesto(9) = 6
modulo_mes_bisiesto(10) = 1
modulo_mes_bisiesto(11) = 4
modulo_mes_bisiesto(12) = 6
'días de la semana
dias_semana(0) = "Domingo"
dias_semana(1) = "Lunes"
dias_semana(2) = "Martes"
dias_semana(3) = "Miércoles"
dias_semana(4) = "Jueves"
dias_semana(5) = "Viernes"
dias_semana(6) = "Sábado"
If IsDate(tanio.Text & "/" & tmes.Text & "/" & tdia.Text) Then
' datos de entrada D = CInt(tdia.Text)
A = CInt(tanio.Text)
If A Mod 4 = 0 And (Not (A Mod 100 = 0) Or A Mod 400 = 0) Then
' es bisiesto M = modulo_mes_bisiesto(CInt(tmes.Text))
Else
' no es bisiesto M = modulo_mes_regular(CInt(tmes.Text))
End If
'aplico la fórmula dia = (((A - 1) Mod 7) + ((((A - 1) \ 4) - ((3 * (((A - 1) \ 100) + 1)) \ 4)) Mod 7) + M + D Mod 7) Mod 7
semana.Caption = dias_semana(dia)
Else
semana.Caption = "incorrecta"
End If
End Sub
en color azul estan las variables que vamos a utilizar, y en rojo las explicaciones que no van a interferir en el codigo, copiadlo y pegadlo, y si no habeis roto nada deberia de funcionar.
No hay comentarios:
Publicar un comentario