5497 liens privés
Prérequis : année bissextile, division entière, reste de la division (modulo).
Soit la date JJ/MM/SSAA (p.e. 31/12/1999), on va calculer D jour de la semaine correspondant en prenant JJ puis MM puis SS puis AA et en appliquant à chaque étape des "calculs" ;
D final correspondra à 0 pour Dimanche, 1 pour Lundi, 2 pour Mardi, 3 pour Mercredi, 4 pour Jeudi, 5 pour Vendredi, 6 pour Samedi.
C'est parti :
JJ : on retient ce nombre
(D = JJ)
MM : on garde en tête si c'est janvier ou février (servira pour l'année bissextile, oui il faut aussi savoir le calculer)
MM : on ajoute le nombre X trouvé ci-dessous en fonction du mois
M = j f m a m j j a s o n d
X = 0 3 3 6 1 4 6 2 5 0 3 5
(D = J + X)
SS : selon le siècle on ajoute Y
16 = années 1600 : Y = 6
17 = années 1700 : Y = 4
18 = années 1800 : Y = 2
19 = années 1900 : Y = 0
20 = années 2000 : Y = 6
21 = années 2100 : Y = 4 (oui ça boucle...)
(D = J + X + Y)
AA : on ajoute AA
(D = J + X + Y + AA)
AA : on ajoute aussi AA divisé par 4 (division entière)
(D = J + X + Y + AA + AA/4)
si SSAA est bissextile et MM = 01 ou 02 (retenu auparavant), enlever 1
(D = J + X + Y + AA + AA/4 - 1)
sinon on ne fait rien
(D = J + X + Y + AA + AA/4)
on calcule D = D modulo 7 (reste de la division par 7) et c'est fini !
(1) Accélération du calcul : à chaque pas on peut remplacer S par S modulo 7
(2) Accélération du calcul : pour AA, on peut lui soustraire 28, 56 ou 84
Une autre explication de la méthode : https://ceclair.fr/jour-de-la-semaine-d-une-date-sans-calendrier