Un algoritmo común para calcular el día de la semana de una fecha concreta es el algoritmo de Zeller . El algoritmo fue publicado en 1882 y diseñado para ser trabajado a mano, pero se puede implementar fácilmente en el software. Algoritmo de Zeller trabaja por encontrar el día de la semana comenzó el siglo , a continuación, la construcción de allí mediante la adición de año , mes y día . Es necesario entender cómo funciona el algoritmo Una buena comprensión de aritmética modular , pero cualquier persona puede aplicarla siguiendo las instrucciones . Instrucciones
1
Preparar las entradas . El algoritmo de espera de un día , mes y año . Números algoritmo
de Zeller los meses de tres a 14 , a partir de marzo y terminando con febrero. Esto garantiza que los días bisiestos siempre caen al final del año , lo que simplifica los cálculos.
Si mes < 3 entonces, mes = mes + 12
2
Calcular el siglo y el años del siglo. El siglo de 1950 debe ser de 19 , a pesar de que cae en el siglo XX.
Siglo = baja ( año /100 ) yearOfCentury = año mod 100
3
Buscar el día de la semana en que comenzó el siglo .
díadelasemana = piso ( siglo /4 ) + 5 * siglo
Zeller determinó que este cálculo , en módulo siete, dará el día de la semana que cualquier siglo comenzó . El cálculo piso maneja el hecho de que cada cuarto del siglo es de un día salto corto.
4
calcular el día de la semana que el año comenzó el .
Díadelasemana = díadelasemana yearOfCentury + + piso ( yearOfCentury /4 )
Cada año se inicia el día siguiente de la semana que en el año anterior , a excepción de los años bisiestos . Este cálculo , módulo siete, da el día de la semana del primer día del año.
5
Encuentre el día de la semana que se inició en el mes .
Díadelasemana = díadelasemana + piso ( ( mes + 1 ) * 26 ) /10 )
Este es el corazón del algoritmo de Zeller . Zeller observó que este cálculo es capaz de determinar en qué día de la semana se iniciará al mes . Se elimina la necesidad de tablas de búsqueda para determinar la longitud de cada mes .
6
Añada el día del mes y calcular el día de la semana en que la fecha cae .
Díadelasemana = díadelasemana + daydayOfWeek = díadelasemana mod 7
7
convertir la fecha a las normas ISO fecha de semanas .
ISO fecha de semana del día de la semana comienza con el lunes = 1 . El algoritmo de Zeller utiliza Sábado = 0 . La conversión utiliza aritmética simple módulo .
Díadelasemana = (( díadelasemana + 5 ) mod 7 ) + 1