Cálculo del día de la semana
# Cálculo del día de la semana

La determinación del día de la semana para cualquier fecha se puede realizar con una variedad de algoritmos. Además, los calendarios perpetuos no requieren ningún cálculo por parte del usuario y son esencialmente tablas de búsqueda. Una aplicación típica es calcular el día de la semana en el que nació alguien u ocurrió un evento específico.

## Conceptos

En el cálculo numérico, los días de la semana se representan como números de días de la semana. Si el lunes es el primer día de la semana, los días se pueden codificar del 1 al 7, de lunes a domingo, de acuerdo con ISO 8601. El día designado con 7 también se puede contar como 0, aplicando el módulo aritmético 7, que calcula el resto de un número después de la división por 7. Por lo tanto, el número 7 se trata como 0, 8 como 1, 9 como 2, 18 como 4 y así sucesivamente. Si el domingo se cuenta como día 1, 7 días después (es decir, el día 8) también es domingo, y el día 18 es el mismo que el día 4, que es miércoles, ya que viene tres días después del domingo.

| Estándar | lunes | martes | miércoles | jueves | viernes | sábado | domingo | Ejemplos de uso |
| - | - | - | - | - | - | - | - | - |
| ISO 8601 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | %_ISODOWI%, %@ISODOWI% (4DOS); DAYOFWEEK (HP Prime) |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | |
| | 2 | 3 | 4 | 5 | 6 | 7 | 1 | %NDAY OF WEEK% (NetWare, DR-DOS); %_DOWI%, %@DOWI% (4DOS) |
| | 1 | 2 | 3 | 4 | 5 | 6 | 0 | Calculadoras financieras HP |

El enfoque básico de casi todos los métodos para calcular el día de la semana comienza a partir de una 'fecha de anclaje': un par conocido (como el 1 de enero de 1800 como miércoles), que determina el número de días entre el día conocido y el día que está tratando de determinar, y utilizando módulo aritmético 7 para encontrar un nuevo día numérico de la semana.

Un enfoque estándar es buscar (o calcular, usando una regla conocida) el valor del primer día de la semana de un siglo dado, buscar (o calcular, usando un método de congruencia) un ajuste para el mes, calcular el número de años bisiestos desde el comienzo del siglo, y luego súmelos junto con el número de años desde el comienzo del siglo y el número de día del mes. Eventualmente, uno termina con un recuento de días al que se aplica módulo 7 para determinar el día de la semana de la fecha.

Algunos métodos hacen todas las sumas primero y luego eliminan los sietes, mientras que otros los eliminan en cada paso, como en el método de Lewis Carroll. De cualquier manera es bastante viable: la primera es más fácil para calculadoras y programas de computadora, la segunda para cálculos mentales (es muy posible hacer todos los cálculos en la cabeza con un poco de práctica). Ninguno de los métodos que se proporcionan aquí realiza comprobaciones de rango, por lo que las fechas no razonables producirán resultados erróneos.

### Días correspondientes

Cada séptimo día del mes tiene el mismo nombre que el anterior:

| Día del mes | d |
| - | - |
| 00 07 14 21 28 | 0 |
| 01 08 15 22 29 | 1 |
| 02 09 16 23 30 | 2 |
| 03 10 17 24 31 | 3 |
| 04 11 18 25 | 4 |
| 05 12 19 26 | 5 |
| 06 13 20 27 | 6 |

### Meses correspondientes

Los "meses correspondientes" son aquellos meses dentro del año calendario que comienzan el mismo día de la semana. Por ejemplo, septiembre y diciembre se corresponden, porque el 1 de septiembre cae el mismo día que el 1 de diciembre (ya que hay exactamente trece semanas de 7 días entre las dos fechas). Los meses solo pueden corresponder si el número de días entre sus primeros días es divisible por 7, o en otras palabras, si sus primeros días están separados por un número entero de semanas. Por ejemplo, febrero de un año común corresponde a marzo porque febrero tiene 28 días, un número divisible por 7, siendo 28 días exactamente cuatro semanas. En un año bisiesto, enero y febrero corresponden a meses diferentes a los de un año común, ya que agregar el 29 de febrero significa que cada mes subsiguiente comienza un día después.

Enero corresponde a octubre en años comunes y abril y julio en años bisiestos. Febrero corresponde a marzo y noviembre en años comunes y agosto en años bisiestos. Marzo siempre corresponde a noviembre, abril siempre corresponde a julio y septiembre siempre corresponde a diciembre. Agosto no corresponde a ningún otro mes de un año común. Octubre no corresponde a ningún otro mes de un año bisiesto. Mayo y junio nunca corresponden a ningún otro mes.

En la siguiente tabla de meses, los meses correspondientes tienen el mismo número, un hecho que se deriva directamente de la definición:

| Años comunes | Años bisiestos | m |
| - | - | - |
| Ene Oct | Oct | 0 |
| May | May | 1 |
| Ago | Feb Ago | 2 |
| Feb Mar Nov | Mar Nov | 3 |
| Jun | Jun | 4 |
| Sep Dic | Sept Dic | 5 |
| Abr Jul | Ene Abr Jul | 6 |

### Años correspondientes

Hay siete días posibles en los que puede comenzar un año, y los años bisiestos alterarán el día de la semana después del 29 de febrero. Esto significa que hay 14 configuraciones que puede tener un año. Todas las configuraciones pueden ser referenciadas por una letra dominical, pero como el 29 de febrero no tiene ninguna letra asignada, un año bisiesto tiene dos letras dominicales, una para enero y febrero y la otra (un paso atrás en la secuencia alfabética) de marzo a diciembre.

Por ejemplo, 2019 fue un año común que comenzaba el martes, lo que indica que el año en su conjunto correspondía al año calendario 2013. Por otro lado, 2020 es un año bisiesto que comienza el miércoles y, en su conjunto, corresponde al año calendario 1992; en concreto, sus 2 primeros meses, excepto el 29 de febrero, corresponden a los del año calendario 2014, mientras que, debido al día bisiesto 2020, sus 10 meses posteriores corresponden al año calendario 2015.

Según lo anterior, cada año bisiesto se repite una vez cada 28 años, y cada año común se repite una vez cada 6 años y dos veces cada 11 años. Por ejemplo, la última ocurrencia de un año bisiesto que comienza un martes fue 2008 y la próxima ocurrencia será 2036. De la misma manera, los próximos años comunes que comienzan el miércoles serán 2025, 2031, 2042 y luego 2053. Ambas declaraciones son cierto a menos que se omita un año bisiesto, pero eso no sucederá hasta 2100. En el caso de que un año centenario no sea bisiesto, el próximo año bisiesto ocurrirá 40 años después de cualquier año bisiesto entre 12 y 28 años, inclusive, lejos a partir de ese año del siglo, y cualquier año bisiesto dentro de los 12 años siguientes al año del siglo volverá a ocurrir 12 años después.

Para obtener más detalles, consulte la tabla siguiente:

| Año del siglo mod 28 | y |
| - | - |
| 00 06 12 17 23 | 0 |
| 01 07 12 18 24 | 1 |
| 02 08 13 19 24 | 2 |
| 03 08 14 20 25 | 3 |
| 04 09 15 20 26 | 4 |
| 04 10 16 21 27 | 5 |
| 05 11 16 22 00 | 6 |

Notas:

* Negro significa todos los meses del año común
* Rojo significa los primeros 2 meses del año bisiesto
* Azul significa los últimos 10 meses del año bisiesto

### Siglos correspondientes

| Siglo juliano mod 700 | Siglo gregoriano mod 400 | Dpia |
| - | - | - |
| 400: 1100 1800 ... | 300: 1500 1900 ... | Dom |
| 300: 1000 1700 ... | | Lun |
| 200 0900 1600 ... | 200: 1800 2200 ... | Mar |
| 100 0800 1500 ... | | Mié |
| 700: 1400 2100 ... | 100: 1700 2100 ... | Jue |
| 600: 1300 2000 ... | | Vie |
| 500: 1200 1900 ... | 000: 1600 2000 ... | Sáb |

"Año 000" es, en cronología normal, el año 1 AC (que precede al 1 DC). En el año astronómico, el año 0 se sitúa entre el 1 a. C. y el 1 d. C. En el calendario juliano proléptico, (es decir, el calendario juliano como habría sido si se hubiera operado correctamente desde el principio), el 1 a. C. comienza el jueves. En el calendario gregoriano proléptico, (llamado así porque no fue ideado hasta 1582), el 1 a. C. comienza el sábado.

## Métodos tabulares para calcular el día de la semana

### Tabla completa: calendarios juliano y gregoriano

Para las fechas julianas anteriores a 1300 y posteriores a 1999, debe utilizarse el año de la tabla que difiere en un múltiplo exacto de 700 años. Para las fechas gregorianas posteriores a 2299, se debe utilizar el año de la tabla que difiere en un múltiplo exacto de 400 años. Los valores " r0 " a " r6 " indican el resto cuando el valor de las centenas se divide por 7 y 4 respectivamente, lo que indica cómo se extiende la serie en cualquier dirección. Tanto los valores julianos como los gregorianos se muestran 1500-1999 por conveniencia. Las cifras en negrita (por ejemplo, 04) indican un año bisiesto. Si un año termina en 00 y sus cientos están en negrita, es un año bisiesto. Así, 19 indica que 1900 no es un año bisiesto gregoriano, (pero 19 en la columna juliana indica que es un año bisiesto juliano, al igual que todos los años julianos x 00 años). 20 indica que 2000 es un año bisiesto. Utilice enero y febrero solo en años bisiestos.

| Cientos de años | Cientos de años | Dígitos del año restante | Dígitos del año restante | Dígitos del año restante | Dígitos del año restante | Mes | Mes | Mes | Mes | Mes | Día de la semana | # |
| - | - | - | - | - | - | - | - | - | - | - | - | - |
| Juliano (r ÷ 7) | Gregoriano (r ÷ 4) | Dígitos del año restante | Dígitos del año restante | Dígitos del año restante | Dígitos del año restante | Mes | Mes | Mes | Mes | Mes | Día de la semana | # |
| r5 19 | 16 20 r0 | 00 06   17 23 | 28 34   45 51 | 56 62   73 79 | 84 90 | Ene | | | | Oct | Sábado | 0 |
| r4 18 | 15 19 r3 | 01 07 12 18 | 29 35 40 46 | 57 63 68 74 | 85 91 96 | | | May | | | Domingo | 1 |
| r3 17 | N/A | 02   13 19 24 | 30   41 47 52 | 58   69 75 80 | 86   97 | Feb | | | Ago | | Lunes | 2 |
| r2 16 | 18 22 r2 | 03 08 14   25 | 31 36 42   53 | 59 64 70   81 | 87 92 98 | Feb | Mar | | | Nov | Martes | 3 |
| r1 15 | N/A | 09 15 20 26 | 37 43 48 54 | 65 71 76 82 | 93 99 | | | Jun | | | Miércoles | 4 |
| r0 14 | 17 21 r1 | 04 10   21 27 | 32 38   49 55 | 60 66   77 83 | 88 94 | | | | Sep | Dec | Jueves | 5 |
| r6 13 | N/A | 05 11 16 22 | 33 39 44 50 | 61 67 72 78 | 89 95 | Ene | Abr | Jul | | | Viernes | 6 |

Para determinar el día de la semana (1 de enero de 2000, sábado)

* el día del mes: 1 ~ 31 (1)
* el mes: (6)
* el año: (0)
* siglo mod 4 del calendario gregoriano y mod 7 para el calendario juliano (0).
* sumar 1+6+0+0=7. Dividir por 7 deja un residuo de 0, por lo que el día de la semana es sábado.

La fórmula es w = (d + m + y + c) mod 7.

### Calendario juliano revisado

Téngase en cuenta que la fecha (y, por lo tanto, el día de la semana) en los calendarios juliano y gregoriano revisados es la misma desde el 14 de octubre de 1923 hasta el 28 de febrero de 2800 d. C. inclusive y que para años grandes es posible restar 6300 o un múltiplo del mismo antes. comenzando para llegar a un año que esté dentro o más cerca de la mesa.

Para buscar el día de la semana de cualquier fecha de cualquier año usando la tabla, reste 100 del año, divida la diferencia por 100, multiplique el cociente resultante (omitiendo las fracciones) por siete y divida el producto por nueve. Tenga en cuenta el cociente (omitiendo fracciones). Ingrese la tabla con el año juliano, y justo antes de la división final sume 50 y reste el cociente anotado arriba.

Ejemplo: ¿Cuál es el día de la semana del 27 de enero de 8315?

8315-6300 = 2015, 2015-100 = 1915, 1915/100 = 19 resto 15, 19x7 = 133, 133/9 = 14 resto 7. 2015 es 700 años antes que 1315, por lo que se usa 1315. De la tabla: para cientos (13): 6. Para los dígitos restantes (15): 4. Para el mes (enero): 0. Para la fecha (27): 27. 6 + 4 + 0 + 27 + 50-14 = 73. 73/7 = 10 restante 3. Día de la semana = martes.

### Dominical Letter

Para encontrar la letra dominical, calcule el día de la semana para el 1 de enero o el 1 de octubre. Si es domingo, la letra dominical es A, si es sábado B, e igualmente hacia atrás a lo largo de la semana y hacia adelante a través del alfabeto hasta el lunes, que es G

Los años bisiestos tienen dos letras dominicales, por lo que para enero y febrero calcule el día de la semana para el 1 de enero y para marzo a diciembre calcule el día de la semana para el 1 de octubre.

Los años bisiestos son todos los años que se dividen exactamente por cuatro con las siguientes excepciones:

En el calendario gregoriano, todos los años que se dividen exactamente entre 100 (excepto los que se dividen exactamente entre 400).

En el calendario juliano revisado, todos los años que se dividen exactamente por 100 (excepto los que dan un resto 200 o 600 cuando se dividen por 900).

### El "día del juicio final"

Este es un artefacto de las matemáticas recreativas. Consulte la regla del fin del mundo para obtener una explicación.

### Verificar el resultado

Utilice esta tabla para encontrar el día de la semana sin ningún cálculo.

| Índice | Índice | Índice | Índice | Índice | Lun A | Mar B | Mié C | Jue D | Vie E | Sáb F | Dom G | Calendario gregoriano y juliano perpetuo Utilice enero y febrero para los años bisiestos Fecha de la letra en la fila del año para la letra de la fila del siglo Todos los días C son días del juicio final |
| - | - | - | - | - | - | - | - | - | - | - | - | - |
| Siglo juliano | Siglo gregoriano | Fecha | Fecha | Fecha | 01 08 15 22 29 | 02 09 16 23 30 | 03 10 17 24 31 | 04 11 18 25 | 05 12 19 26 | 06 13 20 27 | 07 14 21 28 | Calendario gregoriano y juliano perpetuo Utilice enero y febrero para los años bisiestos Fecha de la letra en la fila del año para la letra de la fila del siglo Todos los días C son días del juicio final |
| 12 19 | 16 20 | Abr | Jul | Ene | G | A | B | C | D | E | F | 01 | 07 | 12 | 18 | | 29 | 35 | 40 | 46 | | 57 | 63 | 68 | 74 | | 85 | 91 | 96 |
| 13 20 | | Sep | Dic | | F | G | A | B | C | D | E | 02 | | 13 | 19 | 24 | 30 | | 41 | 47 | 52 | 58 | | 69 | 75 | 80 | 86 | | 97 |
| 14 21 | 17 21 | Jun | | | E | F | G | A | B | C | D | 03 | 08 | 14 | | 25 | 31 | 36 | 42 | | 53 | 59 | 64 | 70 | | 81 | 87 | 92 | 98 |
| 15 22 | | Feb | Mar | Nov | D | E | F | G | A | B | C | | 09 | 15 | 20 | 26 | | 37 | 43 | 48 | 54 | | 65 | 71 | 76 | 82 | | 93 | 99 |
| 16 23 | 18 22 | Ago | Feb | | C | D | E | F | G | A | B | 04 | 10 | | 21 | 27 | 32 | 38 | | 49 | 55 | 60 | 66 | | 77 | 83 | 88 | 94 | |
| 17 24 | | May | | | B | C | D | E | F | G | A | 05 | 11 | 16 | 22 | | 33 | 39 | 44 | 50 | | 61 | 67 | 72 | 78 | | 89 | 95 | |
| 18 25 | 19 23 | Ene | Oct | | A | B | C | D | E | F | G | 06 | | 17 | 23 | 28 | 34 | | 45 | 51 | 56 | 62 | | 73 | 79 | 84 | 90 | | 00 |
| [Año/100] | Siglo gregoriano | Siglo gregoriano | Siglo gregoriano | 20 16 | | 21 17 | | 22 18 | | 23 19 | Año mod 100 |
| [Año/100] | Siglo juliano | Siglo juliano | Siglo juliano | 19 12 | 20 13 | 21 14 | 22 15 | 23 16 | 24 17 | 25 18 | Año mod 100 |

Ejemplos:

* Por método común:

    26 de diciembre de 1893 (Gregoriano)

Diciembre es en la fila F y 26 se encuentra en la columna E, por lo que la carta para la fecha se encuentra en la fila C F y la columna E. 93 (años mod 100) está en la fila D (fila años) y la letra C en la fila años se encuentra en la columna G. 18 ([año / 100] en la columna del siglo gregoriano) está en la fila C (fila del siglo) y la letra en la fila del siglo y la columna G es B, por lo que el día de la semana es el martes.

    13 de octubre de 1307 (Juliano)

El 13 de octubre es un día F. La letra F en la fila de años (07) se encuentra en la columna G . La letra en la fila del siglo (13) y la columna G es E, por lo que el día de la semana es el viernes.

    Enero 1, 2000 (Gregoriano)

El 1 de enero corresponde a G, G en la fila del año ( 0 0) corresponde a F en la fila del siglo ( 20 ) y F corresponde al sábado.

Una fórmula concisa para el método: "La letra de fecha (G), la letra (G) está en la fila del año (0 0) para la letra (F) en la fila del siglo (20), y para el día, la letra (F) se convierte en día laborable (sábado)".

El método letra dominical

Cada día del año (excepto el 29 de febrero) tiene asignada una letra en la secuencia recurrente ABCDEFG. La serie comienza con A el 1 de enero y continúa hasta A nuevamente el 31 de diciembre. La letra del domingo es la que se opone a todos los domingos del año. Dado que el 29 de febrero no tiene carta, esto significa que la carta dominical de marzo a diciembre está un paso atrás en la secuencia en comparación con la de enero y febrero. La letra para cualquier fecha se encontrará donde la fila que contiene el mes (en negro) a la izquierda del "cuadrado latino" se encuentra con la columna que contiene la fecha sobre el "cuadrado latino". La letra del domingo se encontrará donde la columna que contiene el siglo (debajo del "cuadrado latino") se encuentra con la fila que contiene los dos últimos dígitos del año a la derecha del "cuadrado latino".

Entonces, por ejemplo, para encontrar el día de la semana del 16 de junio de 2020:

La columna "20" se encuentra con la fila "20" en "D". La fila "junio" se encuentra con la columna "16" en "F". Como F es dos letras desde D, el día de la semana es dos días desde el domingo, es decir, martes.

## Algoritmos matemáticos

### Algoritmo de Gauss

En una nota escrita a mano en una colección de tablas astronómicas, Carl Friedrich Gauss describió un método para calcular el día de la semana del 1 de enero de un año determinado. Nunca lo publicó. Finalmente se incluyó en sus obras completas en 1927.

El método de Gauss fue aplicable al calendario gregoriano. Numeró los días de la semana del 0 al 6 comenzando con el domingo. Definió la siguiente operación: El día laborable del 1 de enero del año número A es

    $R(1+5R(A-1,4)+4R(A-1,100)+6R(A-1,400),7)$

o

    $R(1+5R(Y-1,4)+3(Y-1)+5R(C,4),7)$

del cual se puede derivar un método para el calendario juliano

    $R(6+5R(A-1,4)+3(A-1),7)$

o

    $R(6+5R(Y-1,4)+3(Y-1)+6C,7)$

dónde $R(y,m)$ es el resto después de la división de y por m, o y módulo m , y Y + 100 C = A.

Para el año 2000, A - 1 = 1999, Y - 1 = 99 y C = 19, el día de la semana del 1 de enero es

    ${\begin{aligned}&=R(1+5R(1999,4)+4R(1999,100)+6R(1999,400),7)\\&=R(1+1+4+0,7)\\&=6\end{aligned}}$
    ${\begin{aligned}&=R(1+5R(99,4)+3\times 99+5R(19,4),7)\\&=R(1+1+3+1,7)\\&=6=Sabado.\end{aligned}}$

El día de la semana del último día del año número A - 1 o 0 de enero del año número A es

    $R(5R(A-1,4)+4R(A-1,100)+6R(A-1,400),7)$

El día de la semana de 0 (un año común) o 1 (un año bisiesto) de enero en el año número A es

    $R(6+5R(A,4)+4R(A,100)+6R(A,400),7)$

Para determinar el día de la semana de una fecha arbitraria, usaremos la siguiente tabla de búsqueda.

| Meses | 11 Ene | 12 Feb | 1 Mar | 2 Abr | 3 May | 4 Jun | 5 Jul | 6 Ago | 7 Sep | 8 Oct | 9 Nov | 10 Dec | M |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| años comunes | 0 | 3 | 3 | 6 | 1 | 4 | 6 | 2 | 5 | 0 | 3 | 5 | m |
| años bisiestos | 0 | 3 | 4 | 0 | 2 | 5 | 0 | 3 | 6 | 1 | 4 | 6 | m |
| Algoritmo | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ | $m=R(\left\lceil 2.6M\right\rceil ,7)$ |

Nota: menos 1 si M es 11 o 12 y más 1 si M es menor de 11 en un año bisiesto.

El día de la semana para cualquier día del año número A es

    $R(D+m+5R(A-1,4)+4R(A-1,100)+6R(A-1,400),7)$

o

    $R(6+D+\left\lceil 2.6M\right\rceil +5R(A,4)+4R(A,100)+6R(A,400),7)$

donde D es el día del mes y A - 1 para enero o febrero.

Los días de semana para el 30 de abril de 1777 y el 23 de febrero de 1855 son

    ${\begin{aligned}&=R(30+6+5R(1776,4)+4R(1776,100)+6R(1776,400),7)\\&=R(2+6+0+3+6,7)\\&=3=Miercoles\end{aligned}}$

y

    ${\begin{aligned}&=R(6+23+\left\lceil 2.6\times 12\right\rceil +5R(1854,4)+4R(1854,100)+6R(1854,400),7)\\&=R(6+2+4+3+6+5,7)\\&=5=Viernes\end{aligned}}$

Esta fórmula también fue convertida en métodos gráficos y tabulares para calcular cualquier día de la semana por Kraitchik y Schwerdtfeger.

**Variación desigual**

Otra variación del algoritmo anterior también funciona sin tablas de búsqueda. Una pequeña desventaja es la inusual convención de conteo de meses y años. La formula es

    $w=\left(d+\lfloor 2.6m-0.2\rfloor +y+\left\lfloor {\frac {y}{4}}\right\rfloor +\left\lfloor {\frac {c}{4}}\right\rfloor -2c\right){\bmod {7}},$

dónde

* Y es el año menos 1 para enero o febrero y el año para cualquier otro mes
* y son los 2 últimos dígitos de Y
* c son los primeros 2 dígitos de Y
* d es el día del mes (1 a 31)
* m es el mes cambiado (marzo = 1, ..., febrero = 12)
* w es el día de la semana (0 = domingo, ..., 6 = sábado). Si w es negativo, se debe sumar 7.

Por ejemplo, 1 de enero de 2000 (año - 1 de enero)

    ${\begin{aligned}w&=\left(1+\lfloor 2.6\cdot 11-0.2\rfloor +(0-1)+\left\lfloor {\frac {0-1}{4}}\right\rfloor +\left\lfloor {\frac {20}{4}}\right\rfloor -2\cdot 20\right){\bmod {7}}\\&=(1+28-1-1+5-40){\bmod {7}}\\&=6={\text{Sabado}}\end{aligned}}$
    ${\begin{aligned}w&=\left(1+\lfloor 2.6\cdot 11-0.2\rfloor +(100-1)+\left\lfloor {\frac {100-1}{4}}\right\rfloor +\left\lfloor {\frac {20-1}{4}}\right\rfloor -2\cdot (20-1)\right){\bmod {7}}\\&=(1+28+99+24+4-38){\bmod {7}}\\&=6={\text{Sabado}}\end{aligned}}$

Nota: El primero es solo para un año bisiesto 00 y el segundo es para cualquier año 00.

El término $\lfloor 2.6m-0.2\rfloor \mod 7$ da los valores de meses: m

| Mes | m |
| - | - |
| enero | 0 |
| febrero | 3 |
| marzo | 2 |
| abril | 5 |
| mayo | 0 |
| junio | 3 |
| julio | 5 |
| agosto | 1 |
| septiembre | 4 |
| octubre | 6 |
| noviembre | 2 |
| diciembre | 4 |

El término $y+\left\lfloor {\frac {y}{4}}\right\rfloor \mod 7$ da los valores de años: y

| y mod 28 | y |
| - | - |
| 01 07 12 18 -- | 1 |
| 02-13 19 24 | 2 |
| 03 08 14-25 | 3 |
| -- 09 15 20 26 | 4 |
| 04 10-21 27 | 5 |
| 05 11 16 22 -- | 6 |
| 06-17 23 00 | 0 |

El término $\left(\left\lfloor {\frac {c}{4}}\right\rfloor -2c\right)\mod 7$ da los valores de los siglos: c

| c mod 4 | c |
| - | - |
| 1 | 5 |
| 2 | 3 |
| 3 | 1 |
| 0 | 0 |

Ahora de la fórmula general: $w=d+m+y+c{\bmod {7}}$; El 1 de enero de 2000 se puede volver a calcular de la siguiente manera:

${\begin{aligned}w&=1+0+5+0{\bmod {7}}=6={\text{Sabado}}\\d&=1,m=0\\y&=5(0-1{\bmod {2}}8=27)\\c&=0(20{\bmod {4}}=0)\end{aligned}}$

${\begin{aligned}w&=1+0+4+1{\bmod {7}}=6={\text{Sabado}}\\d&=1,m=0\\y&=4(99{\bmod {2}}8=15)\\c&=1(20-1{\bmod {4}}=3)\end{aligned}}$

### Algoritmo de Zeller

En el algoritmo de Zeller, los meses están numerados del 3 de marzo al 14 de febrero. Se supone que el año comienza en marzo; esto significa, por ejemplo, que enero de 1995 se tratará como el mes 13 de 1994. La fórmula para el calendario gregoriano es

    $w\equiv \left(\left\lfloor {\frac {13(m+1)}{5}}\right\rfloor +\left\lfloor {\frac {y}{4}}\right\rfloor +\left\lfloor {\frac {c}{4}}\right\rfloor +d+y-2c\right){\bmod {7}}$

dónde

* Y es el año menos 1 para enero o febrero y el año para cualquier otro mes
* y son los 2 últimos dígitos de Y
* c son los primeros 2 dígitos de Y
* d es el día del mes (1 a 31)
* m es el mes cambiado (marzo = 3, ... enero = 13, febrero = 14)
* w es el día de la semana (1 = domingo, .. 0 = sábado)

La única diferencia es una entre el algoritmo de Zeller (Z) y el algoritmo de Gauss (G), es decir, Z - G = 1 = Domingo.

    $(d+\lfloor (m+1)2.6\rfloor +y+\lfloor y/4\rfloor +\lfloor c/4\rfloor -2c){\bmod {7}}-(d+\lfloor 2.6m-0.2\rfloor +y+\lfloor y/4\rfloor +\lfloor c/4\rfloor -2c){\bmod {7}}$
    $=(\lfloor (m+2+1)2.6-(2.6m-0.2)\rfloor ){\bmod {7}}$ (Marzo = 3 en Z pero marzo = 1 en G)
    $=(\lfloor 2.6m+7.8-2.6m+0.2\rfloor ){\bmod {7}}$
    $=8{\bmod {7}}=1$

Entonces podemos obtener los valores de los meses a partir de los del algoritmo gaussiano agregando uno:

| Mes | m |
| - | - |
| enero | 1 |
| febrero | 4 |
| marzo | 3 |
| abril | 6 |
| mayo | 1 |
| junio | 4 |
| julio | 6 |
| agosto | 2 |
| septiembre | 5 |
| octubre | 0 |
| noviembre | 3 |
| diciembre | 5 |

### Algoritmo de Wang

El algoritmo de Wang para el calendario gregoriano es (la fórmula debe restarse de 1 si m es 1 o 2 y el año es bisiesto)

    $w=\left(d-d_{0}(m)+y_{0}-y_{1}+\left\lfloor y_{0}/4-y_{1}/2\right\rfloor -2\left(c{\bmod {4}}\right)\right){\bmod {7}},$

dónde

* $y_{0}$es el último dígito del año
* $y_{1}$es el último segundo dígito del año
* $c$son los 2 primeros dígitos del año
* $d$es el día del mes (1 a 31)
* $m$es el mes (enero = 1, ... diciembre = 12)
* $w$es el día de la semana (0 = domingo, .. 6 = sábado)
* $d_{0}(m)$es la función de días nulos con los valores enumerados en la siguiente tabla

| m | $d_{0}(m)$ | $d_{0}(m)$ |
| - | - | - |
| 1 | 1 | Un día |
| 3 | 5 | m + 2 |
| 5 | 7 | m + 2 |
| 7 | 9 | m + 2 |
| 9 | 3 | m + 1 |
| 11 | 12 | m + 1 |
| 2 | 12 | m + 3 |
| 4 | 2 | m - 2 |
| 6 | 4 | m - 2 |
| 8 | 6 | m - 2 |
| 10 | 8 | m - 2 |
| 12 | 10 | m - 2 |

Se puede derivar un algoritmo para el calendario juliano del algoritmo anterior

    $w=\left(d-d_{0}(m)+y_{0}-y_{1}+\left\lfloor y_{0}/4-y_{1}/2\right\rfloor -c\right){\bmod {7}},$

donde $d_{0}(m)$ es un día del juicio.

| m | $d_{0}(m)$ | $d_{0}(m)$ |
| - | - | - |
| 1 | 3 | C día |
| 3 | 7 | m + 4 |
| 5 | 9 | m + 4 |
| 7 | 11 | m + 4 |
| 9 | 5 | m - 4 |
| 11 | 7 | m - 4 |
| 2 | 0 | m - 2 |
| 4 | 4 | m |
| 6 | 6 | m |
| 8 | 8 | m |
| 10 | 10 | m |
| 12 | 12 | m |

## Otros algoritmos

### Método de Schwerdtfeger

En un método parcialmente tabular de Schwerdtfeger, el año se divide en el siglo y el año de dos dígitos dentro del siglo. El enfoque depende del mes. Para m ≥ 3,

    $c=\left\lfloor {\frac {y}{100}}\right\rfloor \quad {\text{y}}\quad g=y-100c,$

entonces g está entre 0 y 99. Para m = 1,2 ,

    $c=\left\lfloor {\frac {y-1}{100}}\right\rfloor \quad {\text{y}}\quad g=y-1-100c.$

La fórmula para el día de la semana es

    $w=\left(d+e+f+g+\left\lfloor {\frac {g}{4}}\right\rfloor \right){\bmod {7}},$

donde se elige el módulo positivo.

El valor de e se obtiene de la siguiente tabla:

| m | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| - | - | - | - | - | - | - | - | - | - | - | - | - |
| e | 0 | 3 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 |

El valor de f se obtiene de la siguiente tabla, que depende del calendario. Para el calendario gregoriano,

| c mod 4 | 0 | 1 | 2 | 3 |
| - | - | - | - | - |
| f | 0 | 5 | 3 | 1 |

Para el calendario juliano,

| c mod 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| - | - | - | - | - | - | - | - |
| f | 5 | 4 | 3 | 2 | 1 | 0 | 6 |

### Método de Lewis Carroll

Charles Lutwidge Dodgson (Lewis Carroll) ideó un método que se asemeja a un rompecabezas, pero en parte tabular al usar los mismos números de índice para los meses que en la "Tabla completa: calendarios juliano y gregoriano" anterior. Enumera los mismos tres ajustes para los primeros tres meses de los años no bisiestos, uno más alto para el último, y da instrucciones crípticas para encontrar el resto; Sus ajustes por siglos se determinarán utilizando fórmulas similares a las de la tabla de siglos. Aunque explícito al afirmar que su método también funciona para fechas de estilo antiguo, su ejemplo se reproduce a continuación para determinar que "1676, 23 de febrero" es un miércoles, solo funciona en un calendario juliano que comienza el año el 1 de enero, en lugar del 25 de marzo como el "estilo antiguo".

Algoritmo:

   Calcule los siguientes 4 elementos, agregando cada uno, cuando lo encuentre, al total de los elementos anteriores. Cuando un artículo o un total exceda de 7, divida entre 7 y conserve el resto únicamente.
   Ítem del siglo: Para ' Estilo antiguo ' (que terminó el 2 de septiembre de 1752) reste de 18. Para ' Estilo nuevo ' (que comenzó el 14 de septiembre de 1752) divida por 4, tome más de 3, multiplique el resto por 2.
   Ítem del año: Sume el número de docenas, el excedente y el número de 4 en el excedente.
   Ítem del mes: si comienza o termina con una vocal, reste el número, indicando su lugar en el año, de 10. Esto, más el número de días, da el elemento del mes siguiente. El artículo de enero es "0"; para febrero o marzo, "3"; para diciembre, "12".
   Ítem del día: El total así alcanzado debe corregirse, deduciendo "1" (primero sumando 7, si el total es "0"), si la fecha es enero o febrero en un año bisiesto, recordando que cada año, divisible por 4, es un año bisiesto, excepto sólo los años-siglo, en "Nuevo estilo", cuando el número de siglos no es tan divisible (por ejemplo, 1800).

Ejemplos:

**1783, 18 de septiembre**

17, dividido entre 4, deja "1" encima; 1 de 3 da "2"; dos veces 2 es "4". 83 son 6 docenas y 11, dando 17; más 2 da 19, es decir (dividiendo entre 7) "5". Total 9, es decir, "2" El elemento de agosto es "8 de 10", es decir, "2"; entonces, para septiembre, es "2 más 31", es decir, "5" Total 7, es decir, "0", que se apaga. 18 da "4". Respuesta, "jueves".

**1676, 23 de febrero**

16 de 18 da "2" 76 son 6 docenas y 4, dando 10; más 1 da 11, es decir, "4". Total "6" El artículo de febrero es "3". Total 9, es decir, "2" 23 da "2". La corrección total "4" para el año bisiesto da "3". Respuesta, "miércoles".

Dado que el 23 de febrero de 1676 (contando febrero como el segundo mes) es, para Carroll, el mismo día que el gregoriano 4 de marzo de 1676, no llega a la respuesta correcta, a saber, "viernes", para una fecha de estilo antiguo que figura en el calendario gregoriano. es el mismo día que el 5 de marzo de 1677. Si hubiera asumido correctamente que el año comenzaría el 25 de marzo, su método habría tenido en cuenta los números de años diferentes, al igual que el cumpleaños de George Washington, entre los dos calendarios.

Es de destacar que aquellos que han vuelto a publicar el método de Carroll no han señalado su error, sobre todo Martin Gardner.

En 1752, el Imperio Británico abandonó el uso del calendario juliano de estilo antiguo al adoptar el calendario gregoriano, que se ha convertido en el estándar actual en la mayoría de los países del mundo.

### Métodos dependientes de la implementación

En las expresiones de abajo en lenguaje C, y , m y d son, respectivamente, número entero variables que representan el año (por ejemplo, 1988), meses (1-12) y el día del mes (1-31).

En 1990, Michael Keith y Tom Craver publicaron la expresión anterior que busca minimizar el número de pulsaciones de teclas necesarias para ingresar a una función autónoma para convertir una fecha gregoriana en un día numérico de la semana. No conserva ni y ni d , y devuelve 0 = domingo, 1 = lunes, etc.

Poco después, Hans Lachman simplificó su algoritmo para facilitar su uso en dispositivos de gama baja. Tal como se diseñó originalmente para calculadoras de cuatro funciones, su método necesita menos entradas de teclado al limitar su rango a 1905-2099 d. C. o fechas julianas históricas. Posteriormente se modificó para convertir cualquier fecha gregoriana, incluso en un ábaco. En los dispositivos basados en Motorola 68000 hay igualmente menos necesidad de registros de procesador o códigos de operación, según el objetivo de diseño previsto.

**Métodos de Sakamoto**

El precursor tabular para el algoritmo de Tøndering se materializa en la siguiente K & R C función. Con cambios menores, fue adaptado para otros lenguajes de programación de alto nivel como APL2. Publicado por Tomohiko Sakamoto en el grupo de noticias de Usenet comp.lang.c en 1992, es exacto para cualquier fecha gregoriana.

La función no siempre conserva y , y devuelve 0 = domingo, 1 = lunes, etc. Por el contrario, la siguiente expresión

publicado simultáneamente por Sakamoto no es fácilmente adaptable a otros idiomas, e incluso puede fallar si se compila en una computadora que codifica caracteres utilizando valores distintos de estándar ASCII (por ejemplo, EBCDIC), o en compiladores C que hacen cumplir el cumplimiento de ANSI C (incluso en código que sigue siendo compatible con la especificación K&R C original , donde se supone que las declaraciones de tipo omitidas son números enteros). Solo para esta última consideración, la versión más detallada de Sakamoto podría considerarse no portátil, al igual que la de Keith y Craver.

**Rata Die**

El método Rata Die de IBM's requiere que uno sepa el "día clave" del calendario gregoriano proléptico, es decir, el día de la semana del 1 de enero del 1 d. C. (su primera fecha). Esto debe hacerse para establecer el número restante en función del cual se determina el día de la semana para la última parte del análisis. Mediante el uso de un día dio a 13 de agosto de, 2009, que era un jueves como referencia, con Base y n es el número de días y semanas que ha sido desde 01/01/0001 al día dado, respectivamente, y k el día en el dado semana que debe ser inferior a 7, la base se expresa como

Sabiendo que un año divisible por 4 o 400 es un año bisiesto, mientras que un año divisible por 100 y no 400 no es un año bisiesto, se puede escribir un programa de software para encontrar el número de días. La siguiente es una traducción a C del método de IBM para su lenguaje de programación REXX:

Se encuentra que daystotal es 733632 a partir de la fecha base del 1 de enero de AD 1. Este número total de días se puede verificar con un cálculo simple: Ya hay 2008 años completos desde el 01/01/0001. El número total de días en 2008 años sin contar los días bisiestos es 365 * 2008 = 732920 días. Suponga que todos los años divisibles por 4 son años bisiestos. Sume 2008/4 = 502 al total; luego reste los 15 días bisiestos porque los años que son exactamente divisibles por 100 pero no 400 no son bisiestos. Continúe agregando al nuevo total el número de días en los primeros siete meses de 2009 que ya han pasado, que son 31 + 28 + 31 + 30 + 31 + 30 + 31 = 212 días y los 13 días de agosto para obtener Base = 732920 + 502 - 20 + 5 + 212 + 13 = 733632.

Lo que esto significa es que han pasado 733632 días desde la fecha base. Sustituya el valor de Base en la ecuación anterior (i) para obtener 733632 = 7 * 104804 + 4, n = 104804 yk = 4, lo que implica que el 13 de agosto de 2009 es el cuarto día de la semana 104805 desde el 01/01/0001 . El 13 de agosto de 2009 es jueves; por lo tanto, el primer día de la semana debe ser el lunes, y se concluye que el primer día 01/01/0001 del calendario es el lunes . Con base en esto, el resto de la relación Base / 7 , definida anteriormente como k , decide qué día de la semana es. Si k = 0, es lunes, k = 1, es martes, etc.

