Algoritmo para calcular el día de la semana


Algoritmo para calcular el día de la semana

El algoritmo para calcular el día de la semana tiene como finalidad saber el día de la semana para una fecha dada tanto del pasado o el futuro. En realidad, hay un conjunto numeroso de algoritmos para realizar este cálculo, entre ellos está el Algoritmo Doomsday, aunque todos son variantes pequeñas entre ellos, de tal forma que empleando diferentes conjuntos de reglas se obtiene el mismo resultado. Una aplicación típica de este algoritmo es calcular el día de la semana en que nació una persona o que ocurrió un evento especial.

Contenido

Introducción

El fundamento de toda esta familia de algoritmos para calcular el día de la semana es:

  1. Enumerar los días de la semana comenzando por el cero hasta el seis de esta forma podemos emplear aritmética módulo 7 para añadir el número de días transcurridos desde el comienzo de un periodo.
  2. Buscar o calcular mediante una regla en qué día de la semana comenzó un siglo.
  3. Buscar o calcular en qué día de la semana comenzó un año dado.
  4. Buscar o calcular en qué día comienza un mes dado, sabiendo el año.

Conceptos útiles

Meses correspondientes

El concepto "meses correspondientes" se aplica a aquellos meses del calendario que empiezan en el mismo día de la semana. Por ejemplo, septiembre y diciembre son correspondientes ya que el 1 de septiembre cae en el mismo día de la semana que 1 de diciembre. Los meses son correspondientes si el número de días entre ellos es divisible entre 7. Por ejemplo febrero corresponde con marzo ya que febrero tiene 28 días, es decir, un número divisible entre 7, y 28 días son exactamente cuatro semanas. Los meses se corresponden del siguiente modo:

En un año común

En un año bisiesto

Procedimiento

Para determinar el día de la semana de una fecha del calendario gregoriano, podemos seguir el siguiente procedimiento:

  1. Calcular la cantidad de días transcurridos hasta la fecha.
  2. Calcular el módulo con respecto a 7.
  3. El valor obtenido será el día de la semana de la fecha.

Esto lo podemos expresar de la siguiente manera:

d = ((A - 1) \cdot 365 + \left ( \frac{A-1}{4} - \frac{3 \cdot \left( \frac{A - 1}{100} + 1 \right )}{4} \right ) + DM + D) % 7 \,\!

Sin embargo, en realidad no debemos calcular el total de días, sino únicamente los módulos con respecto a 7. Entonces, nuestra expresión se reduce así:

d = ((A - 1) % 7 + \left ( \frac{A-1}{4} - \frac{3 \cdot \left( \frac{A - 1}{100} + 1 \right )}{4} \right ) % 7 + DM % 7 + D % 7) % 7 \,\!

Donde:

  • d \,\! = día de la semana
  • A \,\! = Año
  • DM \,\! = Días transcurridos hasta antes del primer día del mes
  • D \,\! = Día
  • % \,\! = Módulo
  • En todas las divisones solo se consideran las cifras enteras.

Además, tengamos en cuenta que debemos conocer el módulo correspondiente a cada "inicio" de mes. Así, Si estamos buscando una fecha de julio, el módulo sería:

x = (31 % 7 + 28 % 7 + 31 % 7 + 30 % 7 + 31 % 7 + 30 % 7) % 7 \,\!
x = (3 + 0 + 3 + 2 + 3 + 2) % 7 \,\!
x = 6 \,\!

Crearemos entonces una tabla que contenga los módulos acumulados por mes.

Meses E F M A M J J A S O N D
Año regular 0 3 3 6 1 4 6 2 5 0 3 5
Año bisiesto 0 3 4 0 2 5 0 3 6 1 4 6

Por último nuestro algoritmo quedaría así:

d = ((A - 1) % 7 + \left ( \frac{A-1}{4} - \frac{3 \cdot \left( \frac{A - 1}{100} + 1 \right)}{4} \right ) % 7 + M + D % 7) % 7 \,\!

Donde:

M \,\! = Módulo correspondiente al mes.

Ejemplo

Calcular el día de la semana para el 25 de mayo de 2007:

  • A = 2007 \,\!
  • M = 1 \,\!
  • D = 25 \,\!


(A - 1) % 7 = 2006 % 7 = 4 \,\!
\left (\frac{A-1}{4} - \left (\frac{ 3 \cdot \left( \frac{A - 1}{100} + 1\right)}{4}\right ) \right ) % 7 = \left(501 - \left (\frac{63}{4}\right ) \right) % 7 = 3 \,\!
D % 7 = 25 % 7 = 4 \,\!
d = (4 + 3 + 1 + 4) % 7 = 5 \,\!

Si el 0 corresponde al domingo, entonces 5 corresponde a viernes.


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Algoritmo para determinar el día de la semana — Saltar a navegación, búsqueda Para determinar el día de la semana de una fecha del calendario gregoriano, debemos seguir el siguiente procedimiento: Calcular la cantidad de días transcurridos hasta la fecha. Calcular el módulo con respecto a 7.… …   Wikipedia Español

  • Semana (desambiguación) — Semana hace referencia a varios artículos en la wikipedia: Contenido 1 Cómputo de días 2 Efemérides históricas 3 Festividades 4 Cine …   Wikipedia Español

  • Algoritmo Doomsday — El algoritmo Doomsday o regla Doomsday (algoritmo del día del fin del mundo , en español), es un algoritmo que permite calcular en qué día de la semana cae un día de un año dado. Contenido 1 Introducción 2 Cálculo del Doomsday de un año 2.1 …   Wikipedia Español

  • Wikipedia:Fusionar — Categoría:Wikipedia:Fusionar Saltar a navegación, búsqueda Atajos CAT:APFCAT:APF Atajos Para colocar un artículo en esta categoría, utilice las plantillas {{fusionar}}, {{fusionar en}} y {{fusionar desde}}. Estos artículos han sido marcados para… …   Wikipedia Español

  • Lista de artículos que toda Wikipedia debería tener — Wikipedia:Lista de artículos que toda Wikipedia debería tener Saltar a navegación, búsqueda Atajo WP:VITALWP:VITAL Ayuda de edición …   Wikipedia Español

  • Wikipedia:Lista de artículos que toda Wikipedia debería tener — Atajo WP:VITALWP:VITAL Ayuda de edición Antes de comenzar …   Wikipedia Español

  • Congruencia de Zeller — La congruencia de Zeller es un algoritmo ideado por Julius Christian Johannes Zeller para calcular el día de la semana de cualquier fecha del calendario. Contenido 1 Fórmula 2 Análisis 3 Algoritmo 3.1 …   Wikipedia Español

  • 0 de enero — El 0 de enero es un día ficticio anterior al 1 de enero y posterior al 31 de diciembre. Su objetivo es mantener la fecha del año para la cual fue publicada una efeméride, evitando así cualquier referencia al año anterior, incluso habiendo… …   Wikipedia Español

  • Wikipedia:Café (todos) — Atajos WP:CWP:C …   Wikipedia Español

  • Computus — Dionisio el Exiguo inventó la era Anno Domini para calcular la fecha de Pascua …   Wikipedia Español


Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.