Fiestas móviles
Detalles- Detalles
- Categoría: Programación
- Publicado el Sábado, 07 Octubre 2006 12:49
En paises como España, de tradición cultural cristiana, existen una serie de celebraciones a lo largo del año que no caen siempre en la misma fecha del año, como el Viernes Santo o el Carnaval.
Si queremos obtener algorítmicamente cuándo caen estas fiestas, no es muy complicado (si tienes la fórmula, claro).
Estas celebraciones cambian de fecha porque se rigen por el ciclo lunar de 28 días.
Para obtenerlas, es necesario fijar cuál será el llado "domingo de Pascua", en el que se conmemora la resurreción de Cristo. Esta forma de fijar las celebraciones cristianas se fija en el Concilio de Nicea, en el año 325. El motivo fue, aparentemente, celebrarlo siguiendo el calendario judío, que se basaba en ciclos lunares.
Así pues, se fija el domingo de Pascua de cada año como el domingo siguiente a la primera luna llena después del equinocio de primavera.
La fórmula para hallar esta fecha dado un año cualquiera es sencilla de programar (pero no de explicar -yo no sabría hacerlo-, ya que se basa en los movimientos lunares).
Aquí tienes un fragmento de código en C# que lo calcula, y es fácilmente traducible a cualquier otro lenguaje.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | static DateTime DomingoPascua(int anno) { DateTime resultado; int a = anno % 19; //% es resto de la división int b = anno % 4; int c = anno % 7; int d = (19*a+24)%30; int e = (2 * b + 4 * c + 6 * d + 5) % 7; int f = 22 + d + e; //f es el día en el que cae el domingo de pascua contado //a partir del 1 de marzo. Si f<32, cae en marzo //si f>31, cae en abril. El 32 representa al 1 de abril if (f > 31) //año=anno; mes=4; dia=f-31 resultado = new DateTime(anno, 4, f - 31); else //año=anno; mes=3; dia=f resultado = new DateTime(anno, 3, f); return resultado; } |
A partir del domingo de pascua, pueden calcularse el resto de las celebraciones.
- Jueves Santo es el jueves antes del domingo de pascua
- Viernes Santo es el viernes antes del domingo de pascua
- Quincuagésima es el séptimo domingo antes de pascua.
- La ascensión es el sexto jueves después de pascua
- Pentecostés es el 7º domingo después de pascua
- Domingo de la santísima trinidad (domingo de ramos) es el que sigue a pentecostés.
- Corpus chirsti es el 9º jueves después de pascua.
- El miércoles de ceniza es 46 días antes del domingo de la santísima trinidad.
- El martes de carnaval es el martes antes del miércoles de ceniza.
¿Y cómo se suman esos días? ¿Con un bucle? ¡¡¡ Desde luego que no !!!: utilizando el día juliano.

