SoupCalc

Calculateur de dates : calculer une durée, ajouter ou soustraire du temps avec la précision ISO 8601


Fonctionnement du calculateur de dates

Un calculateur de dates répond à deux questions fondamentales : combien de temps sépare deux instants, et quel instant obtient-on lorsqu'on décale une date connue d'un intervalle fixe. En coulisses, les deux opérations reposent sur une même approche rigoureuse : analyser les dates en instants non ambigus selon la norme ISO 8601, effectuer l'arithmétique en Temps Universel Coordonné, et présenter les résultats arrondis à la granularité demandée par l'utilisateur.

L'outil accepte une date de début et une date de fin, calcule la durée écoulée entre elles, et exprime cette durée en jours entiers plus les heures, minutes et secondes restantes. Il peut également prendre une date unique et un décalage entier — positif ou négatif — et renvoyer la date résultante après avoir ajouté ou soustrait un nombre spécifié d'années, de mois ou de jours. Les deux modes fonctionnent sur les mêmes bases strictes, de sorte que le résultat est déterministe et reproductible.

Comprendre l'analyse des entrées ISO 8601

Chaque date saisie dans le calculateur doit être conforme au format combiné date-heure ISO 8601 : YYYY-MM-DDTHH:MM:SS. Le séparateur T distingue la date calendaire de la composante horaire, et toutes les heures sont interprétées comme UTC dès l'analyse. Il n'y a pas de fuseau horaire local implicite, pas d'ajustement pour l'heure d'été, et aucune heure ambigüe. Si l'utilisateur fournit un horodatage partiel — par exemple, une date sans heure — l'outil la traite comme minuit UTC (T00:00:00) ce jour-là.

Les entrées qui ne correspondent pas au modèle ISO 8601 sont rejetées sans exception. La même rigueur s'applique à l'ordre des dates : si la date de fin précède la date de début, le calcul ne produit pas de durée négative. L'outil considère plutôt la saisie comme invalide et s'arrête, empêchant l'utilisateur de se fier à un résultat qui serait difficile à interpréter. Cette politique de rejet en cas d'inversion maintient un espace de résultats propre : chaque durée renvoyée est une étendue de temps positive.

Calculs de durée : jours, heures, minutes et secondes

Lorsque l'outil calcule le temps écoulé entre deux horodatages, il soustrait d'abord les secondes d'époque Unix de l'instant de début de celles de l'instant de fin. L'entier résultant représente le total des secondes écoulées. À partir de cette valeur unique, le calculateur dérive chaque composante que l'utilisateur voit :

  • Les jours entiers sont le quotient entier du total des secondes divisé par 86 400 (le nombre de secondes dans un jour UTC standard). Le reste constitue ce qui remplit les compartiments des heures, des minutes et des secondes.
  • Le total des heures est le total des secondes divisé par 3 600, arrondi à l'entier inférieur. Il ne s'agit pas des « heures restantes après les jours », mais de la durée totale exprimée en heures.
  • Le total des minutes et le total des secondes suivent le même principe : division entière du nombre brut de secondes respectivement par 60 et par 1.

Cette conception par division entière signifie qu'une durée de 90 123 secondes n'est pas présentée comme « 1 jour, 1 heure, 2 minutes et 3 secondes » dans les vues de niveau total. Au lieu de cela, le chiffre du total des heures indique 25 heures, le total des minutes indique 1 502 minutes et le total des secondes indique 90 123 secondes. Parallèlement à ces chiffres cumulatifs, l'outil affiche également la contrepartie décomposée en jours entiers plus les heures, minutes et secondes restantes, afin que les deux perspectives soient disponibles.

Arithmétique des dates avec décalages de mois et d'années

Ajouter ou soustraire des jours est simple : le calculateur décale l'horodatage UTC sous-jacent du nombre exact de secondes. Les mois et les années, en revanche, ont des durées variables, de sorte que l'outil utilise une approche tenant compte du calendrier.

Lorsqu'un utilisateur ajoute un mois à une date, l'outil incrémente le champ du mois tout en préservant la valeur du jour du mois — avec une exception cruciale. Si le mois cible compte moins de jours que le jour d'origine, le calculateur plafonne le résultat au dernier jour valide de ce mois. C'est le plafonnement en fin de mois. Par exemple, ajouter un mois au 31 janvier donne le 29 février lors d'une année bissextile et le 28 février sinon. La composante horaire reste inchangée tout au long de l'opération, de sorte que 2024-01-31T12:00:00 plus un mois devient 2024-02-29T12:00:00.

Les décalages d'années fonctionnent de la même manière : incrémenter le champ de l'année, conserver le mois, et plafonner le jour si la date cible est invalide (le cas le plus courant étant l'ajout d'un an à un 29 février d'une année bissextile qui tombe dans une année non bissextile). Décalages entiers uniquement — les mois ou années fractionnaires ne sont pas pris en charge, car il n'existe pas de définition universellement acceptée de ce que représente un demi-mois.

Exemple concret

Considérons une date de début 2026-01-01T00:00:00 et une date de fin 2026-01-02T01:02:03. Le calculateur calcule la différence en secondes :

La durée est exactement de 1 jour, 1 heure, 2 minutes et 3 secondes. En termes cumulatifs, cela représente 25 heures, 1 502 minutes et 90 123 secondes. L'outil affiche les quatre granularités côte à côte, de sorte que l'utilisateur voit à la fois la vue décomposée (1 jour entier plus le reste) et chaque chiffre de niveau total.

Pour l'arithmétique calendaire, prenons 2024-01-31T12:00:00 plus un mois. Janvier compte 31 jours, donc la cible naïve serait le 31 février. Comme février ne compte que 29 jours dans l'année bissextile 2024, l'outil plafonne le jour au 29. La composante horaire reste fixée à midi, ce qui donne 2024-02-29T12:00:00. Ce comportement de plafonnement est déterministe et cohérent pour tous les cas de limite de fin de mois.

Précision et limites

Le calculateur fonctionne entièrement en UTC et ne tient pas compte des décalages de fuseau horaire ni des transitions d'heure d'été. Il dérive la durée directement des horodatages UTC analysés et rapporte les secondes entières, mais ce résultat ne reflète pas l'expérience « d'horloge murale » d'un utilisateur qui observe les changements d'heure d'été. Si un utilisateur à Paris a besoin de savoir combien d'heures d'horloge locale séparent deux instants qui chevauchent un changement d'heure, il doit appliquer cet ajustement manuellement.

Les secondes intercalaires ne sont pas modélisées. L'outil considère chaque jour UTC comme ayant exactement 86 400 secondes. Pour les durées couvrant plusieurs décennies, l'erreur cumulée due aux secondes intercalaires ignorées peut atteindre quelques dizaines de secondes, ce qui est négligeable pour les calculs de dates calendaires mais pertinent pour un usage scientifique de haute précision.

L'outil ne prend pas non plus en charge les dates antérieures à l'époque Unix (1er janvier 1970) ni postérieures à l'année 9999. Les entrées en dehors de cette plage sont rejetées. La règle de plafonnement en fin de mois est documentée et appliquée de manière cohérente, mais les utilisateurs doivent savoir que les règles métier diffèrent parfois — certains contrats financiers, par exemple, définissent « un mois après le 31 janvier » comme le 28 février chaque année, année bissextile ou non. Le comportement de l'outil suit la convention calendaire commune de fin de mois, et non une norme sectorielle spécifique.

Sources

La norme ISO 8601 régit la représentation des dates et des heures et sous-tend chaque décision d'analyse prise par l'outil. La spécification complète est maintenue par l'Organisation internationale de normalisation.

Notice éditoriale

Cet article a été rédigé pour accompagner la sortie du module de calcul de dates. Il reflète l'implémentation telle qu'elle existe en août 2026. L'exemple concret a été vérifié par rapport au résultat de l'outil à la même date afin de garantir que les chiffres correspondent au calcul en direct.

Les révisions futures documenteront toute modification des règles d'analyse, de la plage de dates prises en charge ou du comportement de plafonnement. Si le calculateur est mis à jour pour prendre en charge des entrées tenant compte des fuseaux horaires ou pour modéliser les secondes intercalaires, cet article sera modifié en conséquence. Auteur : Équipe éditoriale de SoupCalc Dernière révision : 11 août 2026.