Tecnología

Inicio

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

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


Un algoritmo común para calcular el día de la semana de una fecha en particular 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. El algoritmo de Zeller trabaja por encontrar el día de la semana comenzó el siglo, a continuación, construir desde allí mediante la adición de años, meses y días. es una buena comprensión de la aritmética de módulo es necesario para entender cómo funciona el algoritmo, pero cualquier persona puede poner en práctica siguiendo las instrucciones.

Instrucciones

1 Preparar las entradas. El algoritmo espera un día, mes y año.

Los números de los meses Zeller algoritmo de tres a 14, comenzando con marzo y termina a febrero. Esto garantiza que los días bisiestos siempre caen al final del año, lo que simplifica los cálculos.

Si el mes <3 a continuación, mes = mes + 12

2 Calcular el siglo y el año del siglo. El siglo de 1950 debería ser 19, a pesar de que cae en el siglo XX.

siglo = piso (año / 100)
yearOfCentury = año mod 100

3 Encontrar 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 se inició cualquier siglo dado. El cálculo piso maneja el hecho de que cada siglo IV es uno corto día de salto.

4 Calcular el día de la semana que el año se inició el.

díadelasemana = díadelasemana + yearOfCentury + piso (yearOfCentury / 4)

Cada año se inicia al 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 Encontrar el día de la semana que el mes comenzó el.

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á un mes. Se elimina la necesidad de tablas de consulta para determinar la longitud de cada mes.

6 Agregue el día del mes y calcular el día de la semana en los que cae la fecha.

díadelasemana = + díadelasemana día
díadelasemana = díadelasemana 7 mod

7 Convertir la fecha a los estándares ISO semana de la fecha.

ISO fecha de la semana día de la semana comienzan con el algoritmo Lunes = 1. de Zeller utiliza sábado = 0. La conversión utiliza aritmética simple de módulo.

díadelasemana = ((díadelasemana + 5) mod 7) + 1

Consejos y advertencias

  • Este algoritmo sólo funciona para las fechas gregorianas. Para las fechas mayores, será necesario un cálculo diferente.