¿Cuál es el método más fácil de calcular el día de la semana de cualquier fecha?

*** Truco genuino para encontrar el día de la semana para una fecha determinada ***

Este algoritmo, desarrollado por mí, no tiene ninguna limitación y es la forma genuina de encontrar el día de la semana. Solo necesita comprender los pasos a fondo y seguramente podrá encontrar el día de cualquier fecha ORALMENTE.

Supongamos que tenemos que encontrar el día de la semana en la fecha 22/04/1989. Dado que el día y la fecha actuales son martes y 25/10/2011. Siga los pasos que se detallan a continuación para lograr esto:

Paso 1.

Encuentra la diferencia entre el año actual y el año especificado.

Entonces 2011-1989 = 22

Paso 2.

Este paso es solo para calcular los años bisiestos entre el período de años calculado en el paso 1. Puede calcular esto utilizando los siguientes pasos 2.a, 2.by 2.c O bien, puede hacerlo a su manera, pero asegúrese de que usted sigue la regla para la validación del año bisiesto (año bisiesto – Wikipedia).

Paso 2.a)

Encuentre el número de años bisiestos durante estos años (calculado en el paso anterior).

Entonces 22/4 = 5 (considere solo el número entero, fracción de negligencia)

Paso 2.b)

* Omita este paso si el resto es cero. * En el cálculo anterior del año bisiesto, podríamos perder el año bisiesto que podría haber ocurrido en los años restantes (de la división anterior). Para este agregado (resto-1) de la división anterior, al más bajo de los dos años, utilizamos en el Paso 1 y verificamos manualmente si tenemos algún año bisiesto en este lapso de [año más bajo, año más bajo + resto-1], incluyendo Tanto los límites. En caso afirmativo, aumente el recuento de años bisiestos calculados en el paso 2.a en 1 más y manténgalo intacto.

Si bien el chequeo del año bisiestro perdido se cuenta manualmente como un salto solo si el recorrido involucra su mes de febrero (es decir, si estamos atravesando del 29 de julio de 2016 al próximo 29 de julio de 2042, no necesitamos agregar el año perdido para 2016 ya que el recorrido no involucró su Mes de febrero).

Como el resto no es cero, es decir, 2, agregamos (resto-1 = 2-1 =) 1 año a 1989 (el más bajo de 1989 y 2011), es decir, 1989 + 1 = 1990.

Como no tenemos ningún año bisiesto en el lapso [1989,1990] (ambos incluidos), mantendremos intacto el recuento de años bisiestos

es decir, 5 como se calculó en el Paso 2.a

Paso 2.c)

Al pasar del año actual al año especificado, si el siglo está cambiando, compruebe si el nuevo siglo es divisible por 4 o no. En caso de que no sea divisible entre 4, disminuya el recuento de años bisiestos calculados hasta el paso 2.b en 1 más, manténgalo intacto.

Aquí, el siglo cambia del 19 al 20 en el año 2000, por lo que debemos verificar la divisibilidad del siglo por 4.

20 (siglo XX) es divisible por 4, por lo tanto, también mantendremos intacto el recuento de años bisiestos en este paso

es decir, 5 calculado hasta el paso 2.b

Paso 3.

Agregue el módulo (es decir, el valor absoluto) de los resultados de los pasos anteriores 1 y 2.b:

entonces 22 + 5 = 27

Etapa 4.

Firmar convención: ahora recuerde que si estamos retrocediendo desde el año / mes / fecha actual hasta el año / mes / fecha especificados, el resultado tendrá un signo -ve más si estamos atravesando hacia adelante, entonces el resultado tendrá un signo + ve.

Entonces, el resultado es -27, ya que aquí tenemos un recorrido inverso desde 2011 hasta 1989.

Paso 5

Calcule el siguiente resto correspondiente a cada mes. Para el resto del mes de 28 días después de la división entre 7 es 0, para el resto del mes de 29 días después de la división entre 7 es 1, para el resto del mes de 30 días después de la división entre 7 es 2, para el resto del mes de 31 días después de la división entre 7 es 3. Ahora agregue estos remanentes, para todos esos meses, entre el mes actual y el mes especificado, para quienes hemos recorrido el fin de mes.

Entonces septiembre + agosto + julio + junio + mayo + abril = 2 + 3 + 3 + 2 + 3 + 2 = 15.

Tenga en cuenta que no hemos considerado octubre aquí ya que no hemos atravesado su fecha de finalización

es decir, el 31 de octubre, en cambio, hemos considerado abril, ya que hemos recorrido su fecha de finalización.

Según las convenciones de signos, el resultado es -15.

Paso 6

Ahora calcule la diferencia entre la fecha actual y la fecha especificada.

25-22 = 3. Según las convenciones de signos, el resultado es -3.

Paso 7

Ahora agregue los resultados de los pasos 4,5 y 6 y divida la suma entre 7.

Entonces -27-15-3 = -45 y (-45)% 7 = -3 (resto)

Paso 8

Entonces, para obtener el día de la semana de la fecha especificada, atraviese en la dirección especificada por el signo por los días restantes (3 días en este ejemplo) desde el día actual.

Por lo tanto, la respuesta es martes-3 = sábado.

Aplicable para cualquier día entre 1600 y 2499

W [Día de la semana] = D [Término del día] + M [término del mes] + Y [término del año]

EJEMPLO: 17 de agosto de 2015

‘D’ es el resto después de la división por 7

D: 17/7 = 2 Resto3

D [plazo del día] = 3

M [plazo del mes]:

6 de enero (5 en caso de año bisiesto)

2 de febrero (1 en caso de año bisiesto)

Mar 2

Abr 5

Mayo 0

3 de junio

5 de julio

1 de agosto

4 de septiembre

6 de octubre

2 de noviembre

4 de diciembre

M [PLAZO MES] = 1

Y [término del año] = Yc + Y4 + Y7

Yc

1600 a 1699 = 0

1700 a 1799 = 5

1800 a 1899 = 3

1900 a 1999 = 1

2000 a 2099 = 0

2100 a 2199 = 5

2200 a 2299 = 3

2300 a 2399 = 1

2400 a 2499 = 0

Yc = 0

Y4 = ‘Y4’ es el cociente después de la división del número formado por los dos últimos dígitos del año, es decir (15)

Y4: 15/4 = 3 Restante3

Y4 = 3

Y7: ‘Y7’ es el resto después de la división del número formado por los dos últimos dígitos del año, es decir (15)

Y7: 15/7 = 2 Resto 1

Y7 = 1

Y = Yc + Y4 + Y7

Y = 0 + 3 + 1

Y = 4

W [día de la semana] = D + M + Y

= 3 + 1 + 4

= 8

Divida la ‘W’ total por 7 para obtener el resto, es decir, 8/7 = 1 Resto 1

SOL 0

MON 1

MAR 2

MIÉ 3

TRURS 4

VIE 5

SAT 6

así, el día es LUNES.

ejemplo: 6 de marzo de 2003

D = 6 (original)

M = 2

Yc = 0

Y4 = .7 3/4 = 0.7 (así que no incluya en la suma)

Y7 = 3 (original)

W = D + M + Yc + Y4 + Y7

= 6 + 2 + 0 + 3

= 11

11/7 = 1 resto4 es decir, jueves.

También puedes preferir

WolframAlpha.com

La congruencia de Zeller, en mi opinión es:

[matemáticas] h = \ left (q + \ left \ lfloor \ frac {13 (m + 1)} {5} \ right \ rfloor + K + \ left \ lfloor \ frac {K} {4} \ right \ rfloor + \ left \ lfloor \ frac {J} {4} \ right \ rfloor – 2J \ right) \ mod 7 [/ math]

  • h – día de la semana (0 – sábado, 6 – viernes)
  • q – día
  • m – mes, excepto enero = 13 y febrero = 14 (y usa el año anterior si es enero o febrero)
  • K – últimos dos dígitos del año o [math] y \ mod 100 [/ math]
  • J – primeros dos dígitos del año o [matemática] \ lfloor y / 100 \ rfloor [/ math]

Si puedes memorizar la congruencia de Zeller, también deberías poder calcular mentalmente el día de la semana, sin mucha dificultad.

Así que veamos en qué día caerá Halloween este año (31 de octubre de 2016):

  • q = 31
  • m = 10
  • K = 16
  • J = 20

Entonces
[matemáticas] h = \ left (31 + \ left \ lfloor \ frac {13 (10 + 1)} {5} \ right \ rfloor + 16 + \ left \ lfloor \ frac {16} {4} \ right \ rfloor + \ left \ lfloor \ frac {20} {4} \ right \ rfloor – 2 (20) \ right) \ mod 7 [/ math]
[matemáticas] h = 44 \ mod 7 [/ matemáticas]
[matemáticas] h = 2 [/ matemáticas]

h = 2, que significa lunes.

¡El 31 de octubre de 2016 es un lunes!

/ * Resuelto: Encuentra el día de la semana en cualquier fecha del 1 de enero de 0001 al infinito en lenguaje C * /

#include

int dow (int, int, int); / * fecha de la semana * /

int main ()
{int d = -1, m = -1, y = -1;
printf (“\ n Ingrese la fecha (DMY): – \ n”);
scanf (“% i% i% i”, & d, & m, & y);

printf (“\ n = Día (% i /% i /% i):”, d, m, y);

interruptor (dow (d, m, y))
{
caso 0:
printf (“domingo”);
descanso;
caso 1:
printf (“lunes”);
descanso;
caso 2:
printf (“martes”);
descanso;
caso 3:
printf (“miércoles”);
descanso;
caso 4:
printf (“jueves”);
descanso;
caso 5:
printf (“viernes”);
descanso;
caso 6:
printf (“sábado”);
descanso;
defecto:
printf (“# Error inesperado #”);
}

printf (“\ n \ n \ n \ n”);
devuelve 0;
}

int dow (int d, int m, int y)
{
int t [] = {0,3,2,5,0,3,5,1,4,6,2,4};
y – = m <3;
return (y + y / 4 – y * 3/400 – y / 4000 / * si se implementará en el futuro * / + t [m-1] + d)% 7;

}

Java SE 8 admite muchas características nuevas, como este paquete, por lo que la forma más fácil o decir una de las formas eficientes de escribir un código Java para encontrar el día de una fecha específica será

import java.time.LocalDate;

Solución de clase pública {

public static void main (String [] args) {

Escáner en = nuevo escáner (System.in);

int mm = in.nextInt ();

int dd = in.nextInt ();

int yy = in.nextInt ();

cercar();

LocalDate dt = LocalDate.of (aa, mm, dd);

System.out.print (dt.getDayOfWeek ());

}

}

Creo que este es el mejor y más fácil método que les mostraré en las fotos a continuación. También funciona para cualquier fecha, cualquier año.

Método universal!

Primero aprende a contar días impares y algunas cosas pequeñas en la foto de abajo.

Después de esto, recuerde lo que se muestra a continuación en la imagen, que es muy muy fácil.

Ahora está listo para encontrar el día de cualquier fecha que desee.

A continuación se muestran 2 ejemplos sobre … cómo encontrar el día de una fecha determinada.

Nota: Para encontrar días impares de un mes, simplemente divida el no total. de días en ese mes a las 7 y el resto son sus días impares.

P / s: Lo primero que hice fue encontrar el día de mi nacimiento. Es lunes ! ~ Om Namah Shivaay ~

La regla del día del juicio final es suficiente para mí.