Pourquoi le 1/1/1970 est-il le «temps de l'époque»?


456

Pourquoi est-ce

1 janvier 1970 00:00:00

considéré comme l' époque de l'époque ?


21
Je ne sais pas pourquoi quelqu'un pensait que c'était subjectif. L'heure «Epoch» est un schéma d'horodatage standard.
ConcernedOfTunbridgeWells

5
Aujourd'hui, il y a 380 000 heures
mplungjan

21
Nous devrions commencer à compter le temps depuis cette date, nous sommes donc maintenant sur l'année 44.
Leonardo Raele

3
Aujourd'hui, c'est maintenant 1499969999! C'est juste env. 8 heures pour aller!
Dr Beco

1
@LeonardoRaele Ouais! puis par exemple, la Seconde Guerre mondiale a commencé l'année 31 BE!
Siavash Mortazavi

Réponses:


418

Les premières versions d'Unix mesuraient le temps système à des intervalles de 1/60 s. Cela signifiait qu'un entier non signé 32 bits ne pouvait représenter qu'un laps de temps inférieur à 829 jours. Pour cette raison, le temps représenté par le nombre 0(appelé l' époque ) devait être réglé dans un passé très récent. Comme c'était au début des années 1970, l'époque a été fixée à 1971-1-1.

Plus tard, l'heure du système a été modifiée pour incrémenter chaque seconde, ce qui a augmenté la durée pouvant être représentée par un entier non signé 32 bits à environ 136 ans. Comme il n'était plus si important de presser chaque seconde hors du comptoir, l'époque a été arrondie à la décade la plus proche, devenant ainsi 1970-1-1. Il faut supposer que cela était considéré comme un peu plus net que 1971-1-1.

Notez qu'un entier signé 32 bits utilisant 1970-1-1 comme époque peut représenter des dates allant jusqu'à 2038-1-19 , date à laquelle il se terminera par 1901-12-13.


30
1/60 a-t-il quelque chose à voir avec la fréquence du réseau électrique américain?
xtofl

55
C'est la fréquence de l'un des oscillateurs sur les cartes système utilisées à l'époque. Il n'était pas nécessaire que l'oscillateur soit à 60 Hz car il fonctionnait sur DC, mais il était probablement bon marché d'utiliser ce qui était le plus courant à l'époque, et les téléviseurs étaient alors produits en série ...
Matt Howells

18
En fait, à l'époque, il était très courant que les horloges des ordinateurs ainsi que les horodateurs soient synchronisés avec la forme d'onde du réseau américain parce qu'elle était (est?) Très fiable. Il a été multiplié pour obtenir l'horloge du processeur et divisé pour obtenir des secondes pour le RTC.
Alexios

12
@mafioso: Bon, je vais mettre un rappel sur mon ordinateur portable pour 2038 -... 1901-12-13.

18
@JediKnight C'est une spéculation basée sur mes propres expériences en tant que développeur: changer une norme prend du temps, et si votre changement ne prend pas effet, vous vous retrouvez avec des normes concurrentes . La vraie solution au problème d'époque est des entiers 64 bits, ne faisant pas avancer l'époque dans le temps.
Jake

51

Histoire .

Les premières versions de l'heure Unix avaient un entier 32 bits incrémenté à une fréquence de 60 Hz, qui était la fréquence de l'horloge système sur le matériel des premiers systèmes Unix. Par conséquent, la valeur 60 Hz apparaît toujours dans certaines interfaces logicielles. L'époque diffère également de la valeur actuelle.La première édition du Manuel du programmeur Unix datée du 3 novembre 1971 définit l'heure Unix comme "l'heure depuis 00:00:00, le 1er janvier 1971, mesurée en soixantième de seconde".


1
L'époque est le 1er janvier 1970 et non le 1er janvier 1971.
Steve Harrison

10

http://en.wikipedia.org/wiki/Unix_time#History explique un peu les origines du temps Unix et l'époque choisie. La définition du temps unix et de la date de l'époque a subi quelques changements avant de se stabiliser sur ce qu'il est maintenant.

Mais cela ne dit pas pourquoi exactement 1/1/1970 a finalement été choisi.

Extraits notables de la page Wikipedia:

La première édition du manuel du programmeur Unix datée du 3 novembre 1971 définit l'heure Unix comme "l'heure depuis 00:00:00, le 1er janvier, 1971. , mesurée en soixantième de seconde".

En raison de [la] portée limitée, l'époque était redéfinie plus d'une fois , avant que le taux ne soit changé à 1 Hz et que l'époque ait été réglée à sa valeur actuelle.

Plusieurs problèmes ultérieurs, notamment la complexité de la présente définition, résultent du fait que le temps Unix a été défini progressivement par l'utilisation plutôt que complètement défini au départ.


6

Date de référence de l'époque

Une date de référence d'époque est un point de la chronologie à partir duquel nous comptons le temps. Les moments avant ce point sont comptés avec un nombre négatif, les instants suivants sont comptés avec un nombre positif.

De nombreuses époques en usage

Pourquoi le 1er janvier 1970 00:00:00 est-il considéré comme l'époque de l'époque?

Non, pas l' époque, une époque. Il existe de nombreuses époques en usage .

Ce choix d'époque est arbitraire .

Les principaux systèmes informatiques et bibliothèques utilisent au moins une douzaine d'époques différentes . L'une des époques les plus populaires est communément appelée Unix Time , en utilisant le moment UTC de 1970 que vous avez mentionné.

Bien que populaire, 1970 d'Unix Time n'est peut-être pas le plus courant. Le plus courant serait également le 0 janvier 1900 pour d'innombrables feuilles de calcul Microsoft Excel et Lotus 1-2-3, ou le 1er janvier 2001 utilisé par le cadre Cocoa d'Apple dans plus d'un milliard de machines iOS / macOS dans le monde dans d'innombrables applications. Ou peut-être le 6 janvier 1980 utilisé par GPS appareils ?

De nombreuses granularités

Différents systèmes utilisent une granularité différente dans le temps de comptage.

Même le «temps Unix» varie, certains systèmes comptant des secondes entières et quelques millisecondes de comptage . De nombreuses bases de données telles que Postgres utilisent des microsecondes . Certains, comme le cadre java.time moderne de Java 8 et versions ultérieures, utilisent des nanosecondes . Certains utilisent encore d'autres granularités.

ISO 8601

Parce qu'il y a tellement de variances dans l'utilisation d'une référence d'époque et dans les granularités, il est généralement préférable d'éviter de communiquer des moments comme un compte à partir de l'époque. Entre l'ambiguïté de l'époque et de la granularité, ainsi que l'incapacité des humains à percevoir des valeurs significatives (et donc à manquer des valeurs de buggy), utilisez du texte brut au lieu de chiffres.

L' ISO 8601 fournit un ensemble complet de formats pratiques et bien conçus pour exprimer des valeurs date-heure sous forme de texte. Ces formats sont faciles à analyser par la machine ainsi que faciles à lire par les humains à travers les cultures.

Ceux-ci inclus:

  • Date uniquement: 2019-01-23
  • Moment en UTC : 2019-01-23T12:34:56.123456Z
  • Moment avec décalage par rapport à UTC :2019-01-23T18:04:56.123456+05:30
  • Semaine de l'année de la semaine : 2019-W23
  • Date ordinale (du 1er au 366e jour de l'année):2019-234

-10

Réponse courte: pourquoi pas?

Réponse plus longue: le temps lui-même n'a pas vraiment d'importance, tant que tous ceux qui l'utilisent s'accordent sur sa valeur. Comme le 1/1/70 est utilisé depuis si longtemps, son utilisation vous rendra le code aussi compréhensible que possible pour autant de personnes que possible.

Il n'y a pas grand mérite à choisir une époque arbitraire juste pour être différent.


37
Parce qu'Unix a été développé en 1969 et sorti pour la première fois en 1971, il était donc raisonnable de supposer qu'aucune machine n'aurait à représenter une heure système antérieure à 1970-01-01-00: 00: 00.
Jörg W Mittag

3
En tant que développeur de jeux de simulation historiques, il semble assez stupide que les concepteurs de certains objets temporels aient tendance à supposer que tous les programmes ne voudront représenter que des dates dans le passé futur ou récent. Bien sûr, nous pouvons programmer nos propres représentations, ou travailler dans un facteur d'ajustement, mais quand même.
Dronz

8
Le même problème pré-époque s'applique aux utilisations «pratiques» hors jeu, telles que les feuilles de calcul professionnelles, la présentation des données scientifiques, les interfaces utilisateur de la machine à remonter le temps, etc.
Lenoxus

7
@Dronz Vous devez prendre en compte que cela a été conçu pour un ordinateur de 72 000 $ avec 9 Ko de RAM qui utilisait des transistors et des diodes pour les portes logiques comme CPU (pas de puces à l'époque!). Ce n'était donc pas "idiot" de faire ce qui fonctionnait le plus.
Camilo Martin

2
OP est correct au niveau méta, les schémas que nous élaborons pour le temps ont toujours été assez arbitraires. Le nombre de jours dans une année, le nombre de jours dans le mois, l'année "0" et les règles pour l'année bissextile sont ... fous. Chaque système n'est qu'une série de compromis insignifiants, car il était le meilleur qu'ils pouvaient faire avec la technologie disponible et fonctionnait assez bien pour leur cas d'utilisation immédiat. Ce qui est vrai de tous les projets d'ingénierie
:)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.