Le temps Unix compte les secondes depuis 1970
Un horodatage Unix est le nombre de secondes écoulées depuis minuit UTC le 1er janvier 1970. Il ne porte ni fuseau horaire ni heure d'été, et c'est pour cela que serveurs et bases de données stockent ainsi les instants. Une date lisible est ce nombre rendu dans un fuseau donné.
Le nombre de chiffres révèle l'unité. Dix chiffres signifient des secondes et treize des millisecondes. JavaScript travaille en millisecondes tandis que les outils Unix et beaucoup de bases travaillent en secondes, si bien que multiplier ou diviser par mille revient sans cesse.
ISO 8601 est la forme normalisée, écrite 2026-09-16T00:00:00Z. Le Z final signifie UTC, et un décalage comme +09:00 apparaît quand un fuseau est attaché. Échanger des dates dans ce format supprime l'ambiguïté créée par les ordres nationaux du jour, du mois et de l'année.
Les erreurs qui viennent des fuseaux horaires
L'horodatage n'a pas de fuseau, mais la date affichée en a un. Paris a deux heures d'avance sur UTC en été, donc minuit UTC le 16 septembre correspond à 2 h du matin à Paris, et encore à 20 h le 15 à New York. Comparer seulement les dates produit ce décalage apparent d'un jour.
Mélanger secondes et millisecondes projette le résultat en 1970 ou à des dizaines de milliers d'années. Une conversion qui tombe le 1er janvier 1970 signifie qu'une valeur en millisecondes a été lue comme des secondes ; une année dans les cinquante mille signifie l'inverse.
Le problème de 2038 ne touche que les systèmes qui comptent les secondes dans un entier signé de 32 bits. Passé le 19 janvier 2038 la valeur déborde et devient négative. La plupart des environnements actuels utilisent 64 bits, si bien que cela ressort surtout sur d'anciens équipements embarqués et des colonnes de bases héritées.