Timestamp vers date
Convertissez un horodatage en date lisible. Prend en charge les secondes, millisecondes et nanosecondes.
En 2038 une horloge 32 bits ne revient pas à 1970 : elle atterrit en 1901
Un horodatage signé sur 32 bits s'épuise à 2 147 483 647 secondes, soit le 19 janvier 2038 à 03:14:07 UTC. La seconde suivante ne repasse pas à zéro. Elle bascule vers la valeur la plus négative que le type peut contenir, plaçant l'horloge au 13 décembre 1901 : un système qui échoue ainsi recule de 137 ans.
Comment ça marche
- Convertit un horodatage Unix en date lisible et inversement, en UTC et en heure locale.
- Détecte si l'entrée est en secondes ou en millisecondes, l'erreur la plus courante.
- Gère les horodatages négatifs, qui sont valides et représentent des dates antérieures à 1970.
horodatage = secondes écoulées depuis 1970-01-01 00:00:00 UTC maximum 32 bits signé = 2 147 483 647 → 2038-01-19 03:14:07 UTC la seconde suivante bascule à −2 147 483 648 → 1901-12-13 20:45:52 UTC maximum 64 bits signé ≈ 9,223 × 10¹⁸ secondes — environ 292 milliards d'années
Exemple chiffré
La même valeur à dix chiffres lue de deux façons, plus la limite qui met fin au temps 32 bits.
- 1770000000 lu comme des secondes → 2026-02-02
- 1770000000 lu comme des millisecondes → 1970-01-21
- 10 chiffres signifient des secondes ; 13 chiffres des millisecondes
- 2147483647 → 2038-01-19 03:14:07 UTC
- une seconde plus tard → 1901-12-13 20:45:52 UTC
C'est l'erreur d'unité qui est dangereuse, parce qu'elle échoue en silence. Lire des millisecondes comme des secondes vous projette en l'an 58 000 et saute aux yeux ; lire des secondes comme des millisecondes vous place en janvier 1970, ce qui ressemble à une date plausible et passe la relecture.
Lire le résultat
- Une date au 1er janvier 1970 en production signifie presque toujours qu'une valeur nulle ou zéro a atteint le formateur plutôt qu'un vrai horodatage. L'époque est la valeur par défaut d'un entier non initialisé, d'où la fréquence de cette date dans les rapports de bugs.
- Les horodatages négatifs sont parfaitement valides et représentent des dates antérieures à 1970 : −86 400 correspond au 31 décembre 1969. Les systèmes qui les refusent ne peuvent pas stocker de dates historiques, ce qui est une vraie limite et non une mesure de sécurité.
- L'horodatage lui-même ne porte aucun fuseau ; c'est un compte absolu de secondes. Le fuseau n'intervient qu'au formatage, d'où le fait qu'une même valeur s'affiche comme deux dates calendaires différentes pour deux utilisateurs, et pourquoi stocker l'heure locale plutôt qu'un horodatage cause tant d'ennuis.
- Le temps Unix ignore par définition les secondes intercalaires, répétant ou étirant une seconde au lieu de la compter. Ce n'est donc pas un décompte véritable de secondes SI écoulées, ce qui compte pour la mesure précise d'intervalles et presque jamais pour autre chose.
Questions fréquentes
- Pourquoi ma date s'affiche-t-elle en 1970 ?
- Parce que la valeur arrivée au formateur était zéro ou nulle, et zéro est l'époque. C'est rarement un bug d'affichage : l'horodatage n'a jamais été défini, ou s'est perdu en amont, et le 1er janvier 1970 est l'aspect qu'a un entier non défini une fois rendu.
- Comment distinguer les secondes des millisecondes ?
- Comptez les chiffres. Les horodatages actuels font 10 chiffres en secondes et 13 en millisecondes. Traiter des secondes comme des millisecondes est l'erreur contre laquelle se prémunir, car elle produit une date de début 1970 qui a l'air vraie plutôt qu'ouvertement absurde.