Fiestas móviles

 Principal Novedades Utilidades Código Enlaces Access Acerca de mí

     
 
Principal
Arriba

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Fiestas móviles

Las fiestas relacionadas con la pasión de Cristo están vinculadas a un día de una semana en vez de a un día del año y toman como referencia el Domingo de Pascua. Al no coincidir el ciclo de las semanas (lunar) con el del año (solar), no sólo no coinciden las fechas de un año para otro, sino que se van alejando cada vez más de la fecha original, debiendo ajustarse periódicamente para que la Pascua vuelva a coincidir con el 21 de marzo, Equinoccio de Primavera .

El método es calcular la fiesta del Domingo de Pascua y a partir de ella, sumarle o restarle días para calcular otras fiestas. Hay varios métodos para calcular el Domingo de Pascua, por ejemplo, el del Butcher's Eclesiastical Calendar, que es el que usamos aquí, tomado de la página Astrored.

Como a la función le tenemos que pasar como argumento la fiesta que deseamos, he hecho una enumeración en la que, en cada elemento, el nombre coincide con el de una fecha y el valor con el de los días a sumar.

No olvides que la enumeración debes copiarla fuera de la función, al principio del módulo.

 


Option Compare Database
Option Explicit
Enum enuFiestas
    MartesCarnaval = -47
    MiercolesCeniza = -46
    DomingoRamos = -7
    JuevesSanto = -3
    ViernesSanto = -2
    SabadoSanto = -1
    DomingoPascua = 0
    ascension = 39
    pentecostes = 49
    CorpusCristi = 60
    
End Enum
'---------------------------------------------------------------------------------------
' Procedure : FiestaMovil
' DateTime  : 25/09/2005 
' Author    : José Bengoechea Ibaceta (Chea)
' Purpose   : Devuelve la fecha de la fiesta móvil correspondiente a la festividad
'           : que se le pase como argumento en la variable Fiesta
'            Estás autorizado a utilizar este código dentro de una aplicación
'            siempre que esta nota de autor permanezca inalterada.
'            En el caso de querer publicarlo en una página Web, por favor,
'            contactar con el autor en
'
'                 UA@bengoechea.net
'---------------------------------------------------------------------------------------
Public Function FiestaMovil(año As Long, Fiesta As enuFiestas) As Date
Dim a As Integer, b As Integer, c As Integer, d As Integer, e  As Integer
Dim f As Integer, g As Integer, h As Integer, i As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer, p As Integer
Dim PascuaButcher As Date
a = año Mod 19
b = año \ 100
c = año Mod 100
d = b \ 4
e = b Mod 4
f = (b + 8) \ 25
g = (b - f + 1) \ 3
h = ((19 * a) + b - d - g + 15) Mod 30
i = c \ 4
k = c Mod 4
l = (32 + (2 * e) + (2 * i) - h - k) Mod 7
m = (a + (11 * h) + (22 * l)) \ 451
n = (h + l - (7 * m) + 114) \ 31
p = (h + l - (7 * m) + 114) Mod 31
PascuaButcher = DateSerial(año, n, p + 1)
FiestaMovil = PascuaButcher + Fiesta
End Function