Licence CC BY

Calculer le jour de la semaine de n'importe qu'elle date

Ou comment se faire passer pour un grand génie avec une méthode et un peu de calcul mental

Publié :
Auteur :
Catégories :
Temps de lecture estimé : 3 minutes

Bon à l’heure de l’électronique, des téléphones avec des applications calendrier à tout bout de champ, on ne va pas se mentir, la méthode que je vais vous présenter, n’est pas la plus utile. Mais qui ne s’est pas déjà retrouvé pendant un examen à se demander la date du jour, la méthode peut s’avérer tout de même un peu utile.

Par contre s’il s’agit d’impressionner vos amis pour briller en société avec des "le débarquement de Normandie le 6 juin 44, hum, c’était un mardi" et bien cette méthode est faite pour vous.

Ce billet fait suite au poste d'une vidéo sur ma chaine youtube expliquant la méthode en question, mais dont certains retours fut une certaine incompréhension.

La méthode

Pour la simplifier la suite on va poser des variables.

J : La variable du jour de la date M : La variable du ième mois de la date A : La variable de l’année de la date

Ainsi la date s’écrit couramment J/M/A.

La méthode consiste à faire la somme du jour avec le nombre d’année depuis 1900 puis avec le nombre d’année bissextile depuis 1900 (en comptant celle en cours si la date est après le 29 février) et ensuite avec un coefficient dépendant du mois. Le tout modulo 7 pour avoir le numéro du jour de la semaine (0 pour dimanche).

(J+(A1900)+A19004+_M[M])%7\left(J + (A-1900) + \left\lfloor\frac{A-1900}{4}\right\rfloor + \_M[M]\right) \% 7

avec

_M=[0,3,3,6,1,4,6,2,5,0,3,5]\_M = [0,3,3,6,1,4,6,2,5,0,3,5]

Par exemple pour le 23/07/2020, on a (23 + 120 + 30 + 6)%7 = 179%7 = 4 donc un jeudi.

Explication

Le principe de cette méthode est de compter le décalage de jour depuis le 1ᵉʳ Janvier 1900 (qui est un lundi).

Pour chaque année on peut former des paquets de 7 jours à ne pas compter pour le décalage. Puisque une année contient 365 jours (52 semaines et 1 jour) on peut compter un décalage de 1 par année et de 2 pour les années bissextiles.

Une fois décalé au 1ᵉʳ janvier l’année voulue il faut se décaler au bon mois.

Si c’est en janvier, on y est déjà. Mais en février, les 31 jours de janvier sont passés (31 % 7 = 3) donc 3 jours de décalage. En mars on a les 3 jours de décalage de janvier + 28 jours de février donc 31 jours soit toujours 3 jours de décalage. En avril, on a les 3 jours de décalage de février + 31 jours de mars soit 34 jours (34 % 7 = 6) donc 6 jours de décalage. Et ainsi de suite jusqu’en décembre.

On obtient le tableau _M=[0,3,3,6,1,4,6,2,5,0,3,5]\_M = [0,3,3,6,1,4,6,2,5,0,3,5]

Plus qu’à considérer le décalage avec le jour voulu et on y est. On fait un dernier %7 pour avoir un résultat entre 0 et 6 et on a notre décalage depuis le lundi 1ᵉʳ Janvier 1900 et donc le ième jour de la semaine.


Merci d’avoir pris le temps de lire cet article. Je vous prie de bien briller en société grâce à cette méthode et de vous faire passer pour des génies à des télé-crochets.

Et n’hésitez pas à me demander votre jour de naissance ou autre, si on se croise à un JZDS.

10 commentaires

Deux remarques à propos de cette méthode :

  1. On peut l’étendre à tout le calendrier grégorien (y compris le futur) en ajoutant un code de « siècle » (en fait les deux premiers chiffres de l’année qui vaut :
    • 16xx : 6
    • 17xx : 4
    • 18xx : 2
    • 19xx : 0
    • 20xx : 6… et ainsi de suite (6 - 4 - 2 - 0 en boucle).
  2. Dans tous les cas je suis absolument incapable de calculer ce genre de truc de tête en un temps raisonnable.

Effectivement, et on peut meme oublier 1900 si on connaît une année qui commence par un lundi 1er janvier. 2001/2007/2018 rendent les calculs de têtes plus faciles.

"AH AH" indiqua le perspicace Bosse-de-Nage, à qui rien n’échappait

+0 -0

Pas mal ! Mais dans la vraie vie personnellement je serais trop lent à calculer pour qu’on me considère vraiment comme un génie.

Attention toutefois, les années multiples de 100 qui ne sont pas également multiples de 400 ne sont pas bissextiles.

Question piège: quel jour était le 10 octobre 1582 ?

Enfin, on peut compléter utilement avec un petit truc pour calculer un peu plus rapidement n%7: prendre le nombre de centaines, multiplier par 2, et additionner aux dizaines/unités.

Par exemple pour 1234:

1234 % 7
= (12*2 +34) % 7
= 58%7
= 2

A noter que ça peut fonctionner aussi de façon récursive:

123456 % 7
= (1234*2 + 56) %7
= 2524 % 7
= (25*2 +24) % 7
= 74 % 7
= 4

Pourquoi ça marche ? Parce que 100%7=2. Ainsi x%7 c’est la même chose que (x%100 + 2*(x/100))%7.

Au passage, c’est encore plus simple pour n%11 puisque 100%11=1…

Ma plateforme avec 23 jeux de société classiques en 6 langues et 13000 joueurs: http://qcsalon.net/ | Apprenez à faire des sites web accessibles http://www.openweb.eu.org/

+1 -0

Avec la technique donné tu obtiens souvent entre 100 et 200. De tete je retire 70 ou 140, puis je retire le multiple de 7 le plus proche de ce qu’il me reste.

"AH AH" indiqua le perspicace Bosse-de-Nage, à qui rien n’échappait

+0 -0

J’avoue que je me demande toujours ce qu’il se passe avec les années qu’on suppose bissextiles et qui ne le sont pas, j’aurais l’impression que ça bouscule un peu _M\_M  :D

Evitez qu’on vous dise de les lire : FAQ PHP et SymfonyTutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0

Ça ne change rien du tout à _M le problème ce passe avant avec A19004\frac{A-1900}{4} auquel il faudrait ajouter un coefficient.

À noter que le calcul mathématique et surtout la pour permettre de comprendre au gens qui sont habitué au formule de maths. Par exemple si on est une année bissextile après le 29 février, la partie mathématique n’est pas bonne.

"AH AH" indiqua le perspicace Bosse-de-Nage, à qui rien n’échappait

+0 -0

Ah, donc il y a bien ce genre de détail, mais pas là où je le pensais.

Je me souviens que dans mon vieux livre de maths de l’école obligatoire, il y avait justement la formule, et de ce que je me souviens elle était bien plus compliquée, probablement justement qu’elle tenait compte de tout.

Evitez qu’on vous dise de les lire : FAQ PHP et SymfonyTutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte