Outils de développement · Convertisseur d'horodatage Unix
Secondes ou millisecondes ? Distinguer une époque à 10 chiffres d'une époque à 13 chiffres
· Comment ça marche
horodatages temps unix workflow de développeur
La plupart des valeurs d'époque que vous rencontrez aujourd'hui sont soit à dix chiffres (secondes), soit à treize chiffres (millisecondes), et deviner mal donne une date dans des dizaines de milliers d'années. Cet article explique l'arithmétique derrière le nombre de chiffres et pourquoi un convertisseur devrait indiquer l'unité plutôt que de la déduire.
1700000000 ou 1700000000000 ? — le même instant écrit de deux manières, et le tableau de bord qui indiquait une date dans un futur lointain
Une valeur de journal de 1700000000 et une valeur de charge utile de 1700000000000 peuvent décrire le même instant. Traitez la première comme des millisecondes et votre tableau de bord tombe en janvier 1970 ; traitez la seconde comme une seconde et sa date saute des milliers d'années dans le futur. Un horodatage n'est qu'un décompte plus une unité et un point de départ, donc une colonne de base de données nommée create_at sans documentation a omis des informations essentielles.
Pourquoi le décompte actuel des secondes comporte dix chiffres : le milliardième de seconde dans 2001, la plage de dix chiffres allant jusqu'à 2286, et ce que signifieraient neuf chiffres
Le temps Unix compte les secondes écoulées à partir du 01/01/1970 00:00:00 UTC selon la convention POSIX habituelle. Le compteur a franchi le milliard en 2001 ; pour les dates positives contemporaines, il s'agit généralement de dix chiffres décimaux. Il reste dix chiffres jusqu'à ce qu'il atteigne dix milliards en 2286. Il s'agit d'une propriété de notation en base dix, et non d'une règle intégrée dans une chaîne de date ISO. Les valeurs négatives antérieures à l'époque et les dates bien en dehors du présent invalident un simple raccourci de comptage de chiffres.
Pourquoi les millisecondes comptent treize — un facteur mille, trois chiffres supplémentaires, et d'où viennent les conventions JavaScript et Java
JavaScript Date.getTime() compte classiquement les millisecondes, en multipliant l'horodatage des secondes par 1 000. Trois zéros transforment un décompte actuel de dix chiffres en un décompte de treize chiffres en millisecondes. Par exemple, 1 700 000 000 secondes devient 1 700 000 000 000 millisecondes ; les deux sont 2023-11-14T22:13:20.000Z. Un convertisseur qui insère simplement des séparateurs sans indiquer l'unité supposée peut transformer un nombre valide en une date plausible mais erronée.
Là où les suppositions tournent mal : petites valeurs proches de l'époque, dates antérieures à 2001 et dates futures où le nombre de chiffres cesse de faire la discrimination
Les heuristiques échouent vers 1970 lorsqu'une valeur en milliseconde peut être courte, avant 2001 lorsque les secondes comportent moins de dix chiffres, ou avec des compteurs de microsecondes et de nanosecondes. ToolAcre interprète par défaut les magnitudes inférieures à 10¹¹ en secondes et les valeurs plus élevées en millisecondes, et étiquette l'unité utilisée. Ce seuil est une estimation pratique et non un décodeur de format sans ambiguïté. Un horodatage fourni par une API spécifique doit être interprété à l'aide de la documentation de cette API, même lorsque sa longueur est inhabituelle.
Exemple concret : trois valeurs d'un journal : 1700000000, 1700000000000 et 1700000000000000, lues en secondes, millisecondes et microsecondes.
Trois nombres entiers d'un journal illustratif montrent le piège. Interprétez 1700000000 en secondes et 1700000000000 en millisecondes : les deux sont résolus en 2023-11-14T22:13:20Z. Interprétez 1700000000000000 comme microsecondes et divisez par un million pour obtenir le même nombre de secondes. Le convertisseur ToolAcre accepte les secondes ou les millisecondes, pas le mode microsecondes : coller ce troisième nombre sans convertir d'abord son unité ne confirmera pas l'instant prévu. Gardez toujours le champ brut et son unité ensemble pendant le débogage.
Pourquoi l'unité doit être indiquée et non devinée - comment le convertisseur affiche l'unité qu'il a appliquée afin qu'une hypothèse erronée soit visible plutôt que silencieuse
Un service envoyant des horodatages doit nommer l'unité dans son schéma ou utiliser le texte ISO 8601 avec un décalage explicite. Si un champ hérité n'est pas documenté, comparez plusieurs valeurs avec une autre heure d'événement fiable avant de prendre une décision ; une seule date plausible par coïncidence ne constitue pas une preuve suffisante. Le convertisseur affiche l'unité appliquée, vous donnant ainsi la possibilité de détecter une erreur d'un facteur 1 000. Modifiez explicitement l'unité et comparez plutôt que de vous fier à une estimation automatique comme contrat API à long terme.
Ce que cela ne couvre pas : les horodatages stockés sous forme de chaînes, le texte ISO 8601 ou les dates de série de feuilles de calcul, qui constituent des problèmes différents.
Cet article n'explique pas les dates de série Excel, les chaînes telles que 2026-09-28T10:15Z ou le formatage du fuseau horaire des lectures de l'horloge locale. Ce sont des représentations différentes. Les horodatages Unix font référence à un instant ; le même instant apparaît sous forme d’heures d’horloge murale différentes dans différentes zones. Les conventions intercalaires méritent également un traitement séparé, et un compteur signé 32 bits présente un problème de débordement en 2038 qui est distinct de la question des secondes contre millisecondes.
À retenir : comptez les chiffres, puis confirmez l'unité - et comment le convertisseur d'horodatage Unix lit les secondes et les millisecondes avec l'unité étiquetée
Comptez les chiffres comme premier indice, puis confirmez l’unité déclarée par le producteur et au moins un événement connu. Le convertisseur d'horodatage Unix rend visible l'hypothèse appliquée en secondes/millisecondes et imprime les représentations UTC et locales dans votre navigateur. Ne laissez pas une date soignée remplacer la documentation contraire du système qui a produit la valeur.