Cómo calcular qué día de la semana fue
Vamos a ver en este post una forma para saber qué día de la semana fue cualquier fecha. El algoritmo consiste en calcular ciertos coeficientes a partir de la fecha (día, mes y año) y efectuar ciertos cálculos con ellos para quedarnos con un número entre 0 y 6. Después sabiendo qué número es el que corresponde a cada día conseguiremos resolver el problema. Vamos a explicar el método llevando a la vez un ejemplo: mi cumpleaños del año que viene, 1 de Mayo de 2007, que de antemano os digo que es martes:
1.- El siglo: El primer coeficiente que necesitamos, llamémosle A, lo conseguimos con el siglo al que pertenece el año de la fecha siguiendo esta tabla:
1700…1799 | 1800…1899 | 1900…1999 | 2000…2099 | 2100…2199 | 2200…2299 |
+5 | +3 | +1 | 0 | -2 | -4 |
En nuestro ejemplo obtenemos que A = 0
2.- Año: Tomamos los dos últimos dígitos del año en cuestión y a ese número de dos cifras le sumamos un cuarto del mismo (despreciando los decimales). Eso nos proporciona el segundo coeficiente, digamos B.
En nuestro caso: 7/4 = 1′75. Despreciamos los decimales y nos queda 1. Como los dos últimos dígitos son 07 tenemos que B = 8.
3.- Años bisiestos: Éstos son los que cumplen que sus dos últimas cifras forman un múltiplo de 4 (por ejemplo, 1992 o 2004) excepto los terminados en 00. Entre estos últimos sólo son bisiestos los múltiplos de cuatrocientos (por ejemplo 2000). Nuestro tercer coeficiente, C depende de ellos: si el año es bisiesto, y el mes es enero o febrero el coeficiente será C = –1. En cualquier otro caso C = 0.
En nuestro ejemplo, como 2007 no es bisiesto tenemos que C = 0.
4.- Mes: El cuarto coeficiente, D, nos lo da la siguiente tabla:
Enero | Feb. | Marzo | Abril | Mayo | Junio | Julio | Agosto | Sept. | Oct. | Nov. | Dic. |
6 | 2 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 |
En nuestro ejemplo, como el mes es mayo, tenemos que D = 0.
5.- Día: El quinto coeficiente, E, es simplemente el día en cuestión. En este caso E = 1.
6.- Algoritmo: Tomamos todos los coeficientes calculados y los sumamos. Y después calculamos el resto módulo 7 del número que obtenemos. Eso lo podemos hacer restando 7 al resultado tantas veces como sea necesario hasta obtener un número entre 0 y 6 que llamaremos R.
En nuestro ejemplo:
A + B + C + D + E = 0 + 8 + 0 + 0 + 1 = 9
9 - 7 = 2
Por tanto R = 2
7.- Resultado: La asignación de números a cada día de la semana es la siguiente:
Lunes | Martes | Miércoles | Jueves | Viernes | Sábado | Domingo |
1 | 2 | 3 | 4 | 5 | 6 | 0 |
Por tanto, como en nuestro ejemplo R = 2 tenemos que:
el 1 de Mayo de 2007 será martes
como en realidad ocurre.
Espero que os haya parecido interesante.
Fuente: Ese Primo
homero | 22 de Agosto de 2006 | 14:59
Existe un algoritmo llamado “doomsday” para calcular el día de la semana de cualquier fecha, y que es muy similar al que muestras acá, con la gracia adicional de que está pensado para ser aprendido de memoria. En esta página:
http://rudy.ca/doomsday.html
explican el algoritmo y enseñan la forma de memorizarlo. En su momento lo aprendí, y funciona bastante bien.
juan23 | 23 de Agosto de 2006 | 15:49
y las adaptaciones anteriores … cambio del calendario juliano al gregoriano?
^DiAmOnD^ | 24 de Agosto de 2006 | 10:51
Vaya, buena pregunta juan23. Habría que ver cómo se realizó el cambio para adaptar el método con las modificaciones pertinentes. Supongo que no sería demasiado complicado
fede | 7 de Octubre de 2006 | 16:21
El cambio de calendario se realizó en España y países catolicos el mes de octubre de 1582, que solo tuvo 20 días. Ese mes, el día siguiente al jueves 4 fué viernes 15.
En el resto del mundo el cambió fué produciendose en los siguientes siglos (hasta el XX), por ejemplo en Inglaterra y colonias fué en 1752 (el dia siguiente al 3/9 fué 14/9).
El nuevo calendario introdujo las reglas actuales para los años multiplo de 100 y 400.
Esto solo afecta al cálculo del coeficiente “A”, que debería ser entonces:
Siendo cc los 2 primeros digitos del año, (parte entera de año/100)
Si el dato >= 15/10/1582, A = 5, 3, 1 ó 0 según sea cc (mod 4) 1, 2, 3 ó 0.
Si el dato
fede | 8 de Octubre de 2006 | 9:48
Si la fecha es anterior a 15/10/1582, A = 19 - cc
Gabriela | 28 de Octubre de 2006 | 23:09
Hola, me interesa saber qué dia de la semana fue el 7 de abril del 1972. O bien, tener todo el mes completo del mes de Abril de 1972. Si es que lo tienen les agradecería me lo hagan llegar.
Gracias.
^DiAmOnD^ | 29 de Octubre de 2006 | 5:21
Gabriela utilizando la fórmula que se detalla en el post, y si no me he equivocado, el 7 de abril de 1972 fue viernes. Que lo haga alguien más a ver si es correcto.
fede | 29 de Octubre de 2006 | 10:19
El mes completo se puede ver, por ejemplo, aquí.