Cómo calcular el día de la semana de cualquier año

Por jonathan ryan

Paso 1

Prepara la información. Para llevar a cabo el algoritmo es necesario especificar un día, un mes y un año. Éste enumera los meses del tres al 14, se empieza con marzo y termina en febrero. Esto garantiza que los días bisiestos siempre caigan al final del año, lo cual simplifica los cálculos: si el mes <3 entonces, mes = mes + 12.


Paso 2

Calcula el siglo y el año. El siglo de 1950 debe ser 19, a pesar de que con esta cifra se reconoce el siglo XX: siglo = base (año/100) = añoDeSiglo = año mod 100.


Paso 3

Encuentra el día de la semana en que comenzó el siglo: díaDeSemana = base (siglo/4)+ 5 *siglo. Zeller determinó que este cálculo, del módulo siete, dará el día de la semana en que comenzó cualquier siglo. El cálculo base considera el hecho de que cada cuatro siglos no hay un día bisiesto.


Paso 4

Calcula el día de la semana en que comenzó el año: díaDesemana = díaDeSemana + añoDeSiglo + base(añoDeSiglo/ 4). A excepción de los años bisiestos, cada año debe iniciar el día siguiente de la semana con que empezó el año anterior. El cálculo, del módulo siete, da el día de la semana del primer día del año.


Paso 5

Encuentra el día de la semana en que el mes comenzó: díaDeSemana = díaDeSemana + base ((mes + 1) * 26)/10). Éste es el corazón del algoritmo de Zeller quien observó que este cálculo es capaz de determinar en qué día de la semana se iniciará un mes. Con esta formula se elimina la necesidad de tablas de búsqueda para determinar la longitud de cada mes.


Paso 6

Suma el día del mes y calcula el día de la semana en que la fecha cae: díaDeSemana = díaDeSemana + día díaDeSemana = díaDeSemana mod 7.


Paso 7

Convierte la fecha a las normas de la Organización Internacional para la Estandarización: la fecha de la semana; el día de la semana comienza con lunes = 1. Con el algoritmo de Zeller se emplea el Sábado = 0. Para la conversión se usa la aritmética modular simple: díaDeSemana = ((díaDeSemana + 5) mod 7) + 1.