Cálculo del día a partir de la fecha

Nota: Este no es un puesto específico de java. Los métodos que se mencionan a continuación no son específicos de ninguna tecnología y pueden ser implementados en cualquier lenguaje de programación.

INTRODUCCIÓN

Hay dos fórmulas para calcular el día de la semana para una fecha determinada.

  • La regla de Zeller
  • Método del valor clave

Nota: Ambos métodos funcionan sólo para el calendario gregoriano. (La gente de los países de habla inglesa usaba un calendario diferente antes del 14 de septiembre de 1752.)

1) Regla de Zeller

F=k+ [(13*m-1)/5] +D+ [D/4] +[C/4]-2*C donde

k es el día del mes.
m es el número del mes.
D son los dos últimos dígitos del año.
C son los dos primeros dígitos del año.

Nota:
De acuerdo con la regla de Zeller el mes se cuenta de la siguiente manera:
El 1 de marzo, el 2 de abril…. Enero es el 11 y febrero el 12.
Así que el año comienza en marzo y termina en febrero. Así que si la fecha dada tiene un mes como enero o febrero reste 1 del año. Por ejemplo:
Para el 1 de enero de 1998 restar 1 de 1998, es decir, 1998-1=1997 y usar 1997 para calcular D.
Descarta todos los valores decimales y luego encuentra el valor final de F.

Después de obtener el valor de F, divídelo entre 7. El valor de F puede ser positivo o negativo. Si es negativo, supongamos que F = -15. Cuando dividimos por 7 tenemos que encontrar el mayor múltiplo de 7 menor que -15, por lo que el resto será positivo (o cero). -21 es el mayor múltiplo de 7 menos que -15, por lo que el resto es 6 ya que -21 + 6 = -15.

Alternativamente, podemos decir que -7 entra en -15 dos veces, haciendo -14 y dejando un resto de -1. Si añadimos 7 ya que el resto es negativo, es decir, -1 + 7, obtenemos de nuevo 6 como resto. Después de obtener el resto, podemos encontrar el día de la semana para la fecha dada. A continuación se muestran los valores para los restos correspondientes:

SunMonTueWedThursFriSat0123456Ejemplos

para el cálculo del día utilizando la Regla de Zeller:

Calculemos el día para las siguientes fechas:
1 de abril de 1983 y 27 de febrero de 2023.
A) 1 de abril de 1983:
Aquí
k = 1
m=2
D=83
C=19.

Poniendo los valores en la fórmula, obtenemos,
F= 1+ [(13*2-1)/5] +83+83/4+19/4-2*19
= 1+ [(26-1)/5]+83+20.75+4.75-38
= 1+25+83+20+4-38 (descartando los valores decimales)
= 133-38
= 75

Después de calcular F, divídelo entre 7 y obtén el resto.

78/7=11 Cociente
5-Recordatorio

Por lo tanto, el día 1 de abril de 1983 era viernes, ya que el resto es 5.

B) 2 de marzo de 2004:
Aquí,
k = 2
m= 1
D= 04
C= 20.
Poniendo los valores en la fórmula, obtenemos,

F= 2+ [(13*1-1)/5] +04+04/4+20/4-2*20
= 2+ [(13-1)/5] +04+01+05-40
= 2+ [12/5] +10-40
= 2+2+10-40 (descartando los valores decimales)
= 14-40
= -26

Aquí F es negativo. Así que cuando dividimos por 7 tenemos que encontrar el mayor múltiplo de 7 menos de -26, por lo que el resto será positivo (o cero). -28 es el mayor múltiplo de 7 menos que -26, por lo que el resto es 2 ya que -28 + 2 = -26.

Por lo tanto, el resto es 2.

Por lo tanto, el día 2 de marzo de 2004 fue martes ya que el resto es 5.

C) 27 de febrero de 2023:

Aquí,

k = 27
m = 12
D = 22 (ya que el recuento del mes comienza en marzo)
C = 20

Poniendo los valores en la fórmula, obtenemos,

F = 27+ [(13*12-1)/5] +22+22/4+20/4-2*20
= 27+ [(159-1)/5] +22+5.5+5-40
= 27+ [158/5] +22+5.5+5-40
= 27+ [31.6] + 22 + 5.5 + 5 – 40
= 27+ 31+22+5+5-40 (descartando los valores decimales)
= 90-40
= 50

Después de dividir F por 7, obtenemos el resto como 50/7=1.

Por lo tanto, el día 27 de febrero de 2023 es lunes, ya que el resto es 1.

2) El método del valor clave

El método del Valor Clave utiliza códigos de diferentes meses y años para calcular el día de la semana. Sería más fácil si uno es capaz de memorizar los códigos que son muy fáciles de aprender.

Pasos:

  1. Toma los últimos dos dígitos del año.
  2. Divídelo entre 4 y desecha cualquier resto.
  3. Sume el día del mes al valor obtenido en el paso 2.
  4. Añade el valor de la clave del mes, de la siguiente tabla al valor obtenido en el paso 3.

EneFebMarAbrilMayoJunioJulioAgostoSeptiembreNoviembreDec144025036146

  1. Si la fecha es en enero o febrero de un año bisiesto, reste 1 del paso 4.
  2. Añada el código del año (siglo) de la siguiente tabla.

Supongamos que el año no está en la tabla anterior. En este caso todo lo que tenemos que hacer es sumar o restar 400 hasta que tengamos un año (siglo) que esté en la tabla. Entonces obtenemos el código del año de la tabla anterior y añadimos el valor al paso anterior (nuestro total corriente).

  1. Añada los dos últimos dígitos del año al valor obtenido en el paso anterior.
  2. Divida este valor entre 7 y tome el resto. Obtener el día de la siguiente tabla basado en el valor del resto.

SunMonTueWedThursFriSat1234560Ahora

, trataremos de implementar el método anterior tomando dos ejemplos, uno para un año normal y otro para un año bisiesto.

Tomemos como ejemplo el 19 de noviembre de 2582.

  1. Tome los últimos dos dígitos del año. En nuestro caso, este es el 82.
  2. Divídelo entre 4 y desecha el resto. 82 / 4 = 20, el resto 2, así que tomamos sólo 20 descartando 2 (el resto).
  3. Añade el día del mes. En nuestro ejemplo, 20 + 19 = 39.
  4. El mes en nuestro ejemplo es noviembre, que tiene el valor clave de 4. Por lo tanto, 39 + 4 = 43.
  5. El año de nuestro ejemplo es 2582, y los 2500 no están en la tabla. En este caso todo lo que tenemos que hacer es sumar o restar 400 hasta que tengamos un año (siglo) que esté en la tabla. 2582 – 400 = 2182. El 2100 tampoco está en la tabla. Así que volvemos a restar 2182-400=1782. Ahora miramos la tabla para los 1700 y obtenemos el código 4. Ahora añadimos esto a nuestro total: 43 + 4 = 47.
  1. Añadimos los dos últimos dígitos del año al valor que obtuvimos en el paso anterior, es decir, 47 + 82 = 129.
  1. Dividimos este valor entre 7 y tomamos el resto.129/7=18, el resto es 3.

Aquí, el resto son 3. Así que el día 19 de noviembre de 2582 será martes.

Tomemos el 1 de enero de 2008 (año bisiesto) como otro ejemplo.

  1. Toma los dos últimos dígitos del año. En nuestro caso, este es 08.
  2. Divídelo entre 4 y desecha el resto. 08 / 4 = 02.
  3. Sume el día del mes. En nuestro ejemplo, 02 + 01 = 03.
  4. El mes en nuestro ejemplo es enero, que tiene el valor clave de 1. Por lo tanto, 03 + 01 = 04.
  5. Como la fecha es en enero de un año bisiesto, reste 1 del paso 4, es decir, 04 – 01 = 03.
  6. Nuestro ejemplo es el año 2008. Ahora miramos la tabla de la década del 2000, y obtenemos el código 6. Ahora añadimos esto a nuestro total: 03 + 06 = 09.
  1. Añadimos los dos últimos dígitos del año al valor que obtuvimos en el paso anterior, es decir, 09 + 08 = 17.
  1. Dividimos este valor entre 7 y tomamos el resto.17/7=2, el resto es 3.

Aquí, el resto son 3. Así que el día 19 de noviembre de 2582 será martes.

Rate this post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio