Français

Outils de développement · Convertisseur d'horodatage Unix

Pourquoi l'heure Unix commence le 1 janvier 1970 : une brève histoire de l'époque

· Contexte

horodatages Validation unix-time formats de données

Une chronologie rayonnant à partir du point zéro à l'époque Unix
Illustration vectorielle originale de ToolAcre

Rien ne s'est produit le 1 janvier 1970 ; la date a été choisie par commodité après que l'horloge d'origine d'Unix ait menacé de déborder. Cet article raconte l'histoire des premières horloges Unix, le passage aux secondes et comment la convention s'est répandue partout.

Une date que personne ne célèbre : pourquoi 1970 continue d'apparaître dans les bugs, les paramètres par défaut et les tableaux de bord un demi-siècle plus tard

Janvier 1970 apparaît chaque fois que le logiciel se trompe sur une petite durée ou que les secondes comptent pour des millisecondes. Il ne s'agit pas d'un anniversaire de secours généré par ToolAcre ; c'est le point zéro à partir duquel l'entrée a été interprétée. Le test pour l'époque zéro renvoie `1970-01-01T00:00:00.000Z` et jeudi.

Voir cette date est donc un diagnostic. Une valeur proche de zéro, un champ manquant contraint à zéro ou une inadéquation d’échelle peuvent tous atterrir à proximité. Capturez la valeur brute avant de blâmer le formatage. La sortie du calendrier révèle l'arithmétique qu'elle a reçue.

La table des époques notables de ToolAcre donne à zéro une étiquette délibérée, renforçant le fait que 1970 est une référence définie plutôt qu'une page d'erreur choisie par le navigateur.

Première horloge d'Unix — comptant les soixantièmes de seconde depuis le début de 1971 et manquant d'espace de 32 bits en moins de trois ans

Le classeur fournissait un compte rendu détaillé d'une horloge ancienne comptant les soixantièmes à partir de 1971. Aucune des sources de référentiel requises ne documente cet historique. Le répéter de mémoire violerait le contrat de création même si un historique externe pouvait ultérieurement le soutenir.

Ce qui peut être démontré, c'est l'axe actuel : zéro à l'époque, secondes positives après et secondes négatives avant. Ce mécanisme est suffisant pour utiliser le convertisseur et le logiciel de diagnostic. Un futur article historique devrait ajouter des sources primaires ou scientifiques examinées plutôt que de traiter le code comme une preuve de réunions de conception.

Le référentiel ne fournit pas la première conception d'horloge d'Unix, donc aucune reconstruction historique n'est revendiquée.

ToolAcre nomme son horodatage Unix d'entrée et le définit dans le guide d'erreur en secondes ou millisecondes depuis 1970-01-01 UTC. La source n'explique pas pourquoi cette année a été sélectionnée, si la rondeur comptait ou quel horizon souhaitaient les designers. Ces motifs restent omis.

L'arithmétique explique l'utilité durable d'une origine fixe : la soustraction donne la distance écoulée, la comparaison ordonne les instants et un signe indique de quel côté de zéro se trouve une valeur. Le choix du zéro est conventionnel ; la cohérence entre les producteurs et les consommateurs est ce qui rend les chiffres interopérables.

Cette distinction sépare la convention et les conséquences. Les logiciels peuvent compter avec confiance sur les conséquences tandis que les historiens continuent d’évaluer les preuves sur l’origine de la convention.

La définition implémentée utilise 1970 ; les motivations pour le choisir nécessitent des sources historiques non présentes ici

Les tests modélisent chaque jour comme le fait la conversion POSIX et passent explicitement de `2016-12-31T23:59:59Z` à `2017-01-01T00:00:00Z`. Il s’agit d’une preuve exécutable du comportement de cet outil. Il ne s’agit pas d’une citation du libellé ou de la portée complète d’une norme externe.

Gardez les revendications relatives aux normes distinctes des tests de mise en œuvre. Un test prouve ce qu'une version fait sous ses luminaires ; un document de normes définit ce que les systèmes conformes doivent faire. Ici, le contrat pratique est suffisamment clair pour prédire la production sans inventer une histoire de formalisation.

Le test empêche également un futur refactor d'insérer discrètement une étiquette de saut spéciale dans la sortie. La compatibilité observable est préservée sans exagérer la raison pour laquelle la convention existe.

ToolAcre teste le modèle de style POSIX mais ne sert pas de citation de standards

JavaScript Date représente son nombre d'époques en millisecondes, tandis que ToolAcre accepte les secondes Unix et les convertit en les multipliant par 1,000. L'itinéraire renvoie également les deux formulaires. Cette limite explique pourquoi les applications Web exposent fréquemment le même instant avec trois zéros décimaux supplémentaires.

Le référentiel ne peut pas établir la chronologie selon laquelle les bases de données, les bibliothèques C et d'autres écosystèmes ont adopté les représentations d'époque. Plutôt que de raconter une diffusion sans source, il montre une couture d'interopérabilité actuelle et étiquette l'unité utilisée. Il s’agit d’une preuve exploitable pour les développeurs travaillant aujourd’hui.

Cette retenue évite un échec de contenu familier : une séquence d'étapes plausibles répétées sans citations jusqu'à ce que les lecteurs ultérieurs confondent la répétition accumulée avec une preuve documentaire.

Les preuves du référentiel montrent la représentation en millisecondes de JavaScript, et non l'historique complet de la diffusion.

Une époque fixe ne comporte aucune zone locale. ToolAcre formate la date résultante en UTC et séparément dans la zone locale du navigateur. Les valeurs négatives s'étendent avant zéro, comme le démontre le test −1. Ces conséquences découlent directement d’un axe numérique et d’une couche de formatage.

L'implémentation a également une plage de dates de ±8.64×10¹⁵ millisecondes. C’est une limite de la représentation choisie, et non une limite inhérente à l’idée abstraite d’une époque. Identifiez toujours la plage et l'unité dont il s'agit avant de généraliser à partir du résultat d'un convertisseur.

Le formateur local peut appliquer une date avant ou après la limite UTC en fonction du décalage. Cela ne change pas zéro ; cela ne change que la projection du calendrier humain.

Ce que cela ne couvre pas : les époques d'autres systèmes, telles que 1900, 1601 et 1980, qui ont leur propre histoire

D'autres systèmes peuvent choisir un autre zéro et une autre échelle, c'est pourquoi un grand entier peut rester absurde sous les deux unités ToolAcre. Cet article ne raconte pas l'histoire des origines 1900, 1601 ou 1980. L'article 340 se concentre plutôt sur la reconnaissance de cette inadéquation et sur la dérivation des conversions à partir de définitions documentées.

Lorsque l'origine est inconnue, comparez avec la documentation source plutôt que de décaler les zéros à plusieurs reprises. Un convertisseur Unix suppose intentionnellement 1970 ; il ne peut pas auto-identifier une époque étrangère à partir d’un seul numéro. Garder l'origine à côté de l'unité évite qu'un succès arithmétique ne devienne une erreur sémantique.

Les origines d'autres époques sont comparées séparément sans revendiquer leur histoire ici

La leçon fiable est mécanique : le zéro Unix correspond au début de 1970 UTC, les signes s'étendent autour de lui et les secondes deviennent des millisecondes JavaScript avant le formatage de la date. ToolAcre rend chacun de ces faits observables avec les valeurs 0, −1 et la table des époques notables.

Les raisons pour lesquelles les gens ont choisi cette convention appartiennent à l'histoire, et non à l'inférence du code moderne. Respecter cette limite produit un récit plus court mais plus vrai. Utilisez le convertisseur pour l'arithmétique ; utiliser des documents historiques appropriés avant d’attribuer des motifs ou des jalons.

La discipline en matière de preuves fait partie de l'exactitude technique. Une omission précise indique aux responsables exactement quelle nouvelle source d'approvisionnement est requise avant que le récit historique puisse se développer de manière responsable.