Aller au contenu
Français
L'établiDes outils qui ne téléversent rien
Un atelier de l'association ODERSARien ne part, rien n'est gardé, rien ne nous arrive.

L'atelier · Calcul de dates

Comment ça marche : Calcul de dates

Tous les calculs sont faits à midi en temps universel, jamais à minuit en heure locale : à minuit, un changement d'heure décale la date d'un jour entier, et c'est l'erreur qui fait rater une échéance sans qu'on comprenne pourquoi.

Ouvrir l'outil

Un calcul de dates a l'air trivial et il ne l'est pas. Deux pièges y font trébucher la plupart des outils : le passage à l'heure d'été, qui raccourcit une journée de soixante minutes et fait basculer un calcul d'un jour entier quand il part de minuit, et l'ajout de mois, qui n'a pas de réponse unique quand on part du 31 janvier.

Cet outil fait donc tout à midi en temps universel. Un jour ajouté est alors toujours un jour, quel que soit le fuseau et quel que soit le changement d'heure traversé. Et quand une question n'a pas de réponse unique, il le dit et montre les deux réponses possibles, au lieu de choisir en silence.

Vous ne trouverez pas de jours fériés ici, et c'est une décision, pas un oubli. Ils diffèrent d'un pays à l'autre, parfois d'une région à l'autre du même pays, et leurs dates changent chaque année, avec des jours de remplacement quand ils tombent un week-end. Une liste figée dans un outil pourrit en douze mois, et un utilisateur qui la croit se retrouve avec une échéance fausse.

Comment ça marche

  1. Choisissez le calcul, puis tapez vos dates au format année, mois, jour, séparés par des tirets.
  2. Le résultat se met à jour à chaque changement, avec le détail de ce qui a été compté.
  3. Le format des dates est celui de la norme internationale, et c'est délibéré : « 03/04 » veut dire le 3 avril dans une moitié du monde et le 4 mars dans l'autre.

Formats acceptés

Cet outil ne reçoit ni fichier ni texte. Les dates se tapent au format année-mois-jour, celui de la norme internationale, parce qu'il n'a aucune ambiguïté et se trie tout seul.

Aucune entrée

Deux dates tapées, ou une date et un nombre. Aucun calendrier de jours fériés n'est embarqué, et le pourquoi est écrit dans les limites.

Voir la matrice de compatibilité

Ses limites

Aucun jour férié n'est embarqué

Ils diffèrent par pays, parfois par région d'un même pays, ils changent de date chaque année, et un jour férié qui tombe un week-end donne souvent un jour de remplacement décidé au cas par cas. Le calendrier officiel britannique, par exemple, publie explicitement des « jours de remplacement » et des listes différentes pour l'Écosse et pour l'Angleterre. Une liste figée dans un outil serait fausse dans douze mois, et ce projet vise un public mondial : les jours ouvrés comptés ici sont donc du lundi au vendredi, et rien d'autre. C'est dit, et c'est à vous de retirer vos fériés à la main.

Ajouter des mois n'a pas de réponse unique, et l'outil montre les deux

Un mois après le 31 janvier, c'est le 28 février pour la plupart des logiciels, qui ramènent au dernier jour du mois, et le 3 mars pour ceux qui laissent déborder. Aucune des deux réponses n'est fausse : la question est mal posée. L'outil affiche donc les deux quand elles diffèrent, avec leur règle nommée, plutôt que de choisir pour vous.

Le texte de la norme des dates est payant, et nous ne l'avons pas lu

La numérotation des semaines vient de la norme internationale ISO 8601, dont le texte se vend autour de 180 francs suisses. Nous ne l'avons donc pas lu. Le document gratuit de l'IETF qui en dérive écrit lui-même que la grammaire complète de cette norme est trop complexe pour la plupart des usages, et il ne couvre PAS les numéros de semaine. Nous appliquons la règle telle qu'elle est décrite par la spécification du langage de programmation du navigateur, qui est gratuite : la semaine 1 est celle qui contient le premier jeudi de janvier. C'est le même aveu que pour la norme du QR code : nous disons ce que nous n'avons pas lu.

Avant octobre 1582, le calendrier employé n'a jamais existé

Le navigateur calcule sur le calendrier grégorien PROLONGÉ vers le passé, c'est-à-dire appliqué à des siècles où il n'était pas en usage. Une date de 1500 rendue par cet outil ne correspond donc pas à la date qu'un contemporain aurait écrite, et l'écart va jusqu'à une dizaine de jours. Ce n'est pas un défaut de l'outil, c'est la définition du calendrier employé, et un outil de dates qui ne le dirait pas laisserait croire à une exactitude historique qu'il n'a pas.

Les dates se tapent, il n'y a pas de calendrier à cliquer

La charte graphique de ce site n'a pas de champ de date dessiné, et un champ de date natif du navigateur arriverait sans aucun de nos styles, avec sa bordure et sa hauteur à lui : la charte est gelée, et nous ne l'entamons pas pour un outil. Le format tapé a d'ailleurs un avantage réel : « 03/04 » désigne le 3 avril dans une moitié du monde et le 4 mars dans l'autre, alors que le format international ne se prête à aucune confusion.

Les dates possibles s'arrêtent à environ 273 000 ans de part et d'autre de 1970

C'est la plage que la spécification du langage garantit, et elle est affichée par l'outil. Au-delà, le navigateur ne rend plus une date mais une valeur invalide, et l'outil le dit au lieu d'afficher un résultat vide.

Questions sur cet outil

Mes dates sont-elles envoyées quelque part ?

Non, et il n'y a même pas de quoi : l'outil ne fait que du calcul. Ouvrez l'inspecteur avec la touche F12, onglet « Réseau », videz la liste et calculez autant que vous voulez, la liste reste vide. Cela compte plus qu'il n'y paraît : une date de naissance, une date d'audience ou une date d'échéance médicale sont des informations sensibles, et un calculateur en ligne ordinaire les reçoit.

Pourquoi calculer à midi et pas à minuit ?

Parce qu'une journée de changement d'heure ne fait pas vingt-quatre heures. Si un calcul part de minuit et ajoute des jours en heures, il tombe à vingt-trois heures ou à une heure du matin selon le sens du changement, et la date affichée saute d'un jour. En partant de midi, il reste douze heures de marge de chaque côté : aucun changement d'heure connu ne dépasse deux heures. C'est un vieux truc de programmeur, et c'est celui qui évite la classe d'erreurs la plus courante dans les calculs de dates.

Pourquoi l'ajout de mois donne-t-il parfois deux réponses ?

Parce que la question n'a pas de réponse unique. Un mois après le 31 janvier : le 31 février n'existe pas. Certains logiciels ramènent au 28 ou 29 février, d'autres laissent déborder au 3 mars. Les deux comportements existent dans de vrais logiciels de gestion, et choisir l'un sans le dire donnerait une échéance fausse à la moitié de nos visiteurs. L'outil affiche donc les deux, avec la règle qui produit chacune, et vous choisissez celle que votre contrat ou votre administration applique.

Pourquoi n'y a-t-il pas de jours fériés ?

Parce qu'une liste de jours fériés est la partie d'un outil qui pourrit le plus vite. Ils diffèrent par pays, parfois par région d'un même pays, leurs dates bougent d'une année sur l'autre, et un férié tombant un samedi donne dans plusieurs pays un jour de remplacement décidé au cas par cas. Embarquer une liste, c'est promettre de la tenir à jour pour tous les pays du monde, tous les ans. Nous préférons compter les jours ouvrés du lundi au vendredi, le dire clairement, et vous laisser retirer vos fériés : c'est une soustraction que vous ferez juste, alors qu'une liste périmée vous ferait rater une échéance.

Le numéro de semaine que vous donnez est-il le bon ?

C'est celui de la norme internationale, appliqué selon la règle largement décrite : la semaine 1 est celle qui contient le premier jeudi de janvier, et la semaine commence le lundi. Il faut savoir que d'autres conventions existent et coexistent : dans une partie du monde, la semaine commence le dimanche et la semaine 1 est celle qui contient le 1er janvier. Le numéro affiché ici peut donc différer de celui de votre tableur ou de votre agenda, selon leur réglage. Nous disons aussi que nous n'avons pas lu le texte de la norme, qui est payant.

Puis-je calculer un âge exact ?

Oui, avec l'écart entre deux dates : l'outil donne les jours, puis les mois entiers et le reste, ce qui est la façon dont un âge se dit. Attention toutefois à la même ambiguïté que pour l'ajout de mois : un enfant né un 29 février a un anniversaire dont la définition dépend du pays, et aucun calcul ne tranchera cela pour vous.