Y a-t-il une raison derrière l'utilisation de la date (1er janvier 1970) comme standard par défaut pour la manipulation de l'heure? J'ai vu ce standard en Java ainsi qu'en Python. Ces deux langages que je connais. Y a-t-il d'autres langages populaires qui suivent le même standard?
Décrivez s'il vous plait.
C'est la norme de temps Unix.
L'heure Unix, ou heure POSIX, est un système de description des points dans le temps, défini comme le nombre de secondes écoulées depuis minuit le temps universel coordonné proleptique (UTC) du 1er janvier 1970, sans compter les secondes intercalaires.
utilisant la date (1er janvier 1970) comme standard par défaut
La Question fait deux fausses hypothèses:
Le temps dans l'informatique n'est pas toujours suivi depuis le début de 1970 UTC . Bien que Epoch soit populaire, divers environnements informatiques au cours des décennies ont utilisé au moins près de deux douzaines d'époques . Certains datent d'autres siècles. Ils vont de l'année 0 (zéro) à 2001.
Voici quelques-uns.
0 janvier 1 BC
1 janvier, AD 1
15 octobre 1582
1 janvier 1601
31 décembre 1840
17 novembre 1858
30 décembre 1899
31 décembre 1899
1 janvier 1900
1 janvier 1904
31 décembre 1967
1 janvier 1980
6 janvier 1980
1 janvier 2000
1 janvier 2001
Le début de 1970 est populaire, probablement en raison de son utilisation par Unix. Mais ce n'est nullement dominant. Par exemple:
January 0, 1900
(31 décembre 1899).1 January 2001, GMT
.January 6, 1980
tandis que l'alternative européenne Galileo utilise 22 August 1999
.En supposant qu'un décompte depuis l'époque utilise l'époque Unix, cela ouvre une grande vulnérabilité pour les bogues. Un tel décompte est impossible pour un humain à déchiffrer instantanément, donc les erreurs ou les problèmes ne seront pas facilement signalés lors du débogage et de la journalisation. Un autre problème est l'ambiguïté de la granularité expliquée ci-dessous.
Je suggère fortement de sérialiser plutôt les valeurs de date-heure en tant que chaînes sans ambiguïté ISO 8601 pour l'échange de données plutôt qu'en nombre entier depuis l'époque: YYYY-MM-DDTHH:MM:SS.SSSZ
tel que 2014-10-14T16:32:41.018Z
.
Un autre problème avec le suivi du temps depuis l'époque est l'unité de temps, avec au moins quatre niveaux de résolution couramment utilisés.
1er janvier 1970 00:00:00 am est le point zéro de heure POSIX .
Y a-t-il une raison derrière l'utilisation de la date (1er janvier 1970) comme standard pour la manipulation du temps?
Aucune raison qui compte.
Le module time
de Python est la bibliothèque C. Demandez à Ken Thompson pourquoi il a choisi cette date pour une date d'époque. C'était peut-être l'anniversaire de quelqu'un.
Excel utilise deux époques différentes. Une raison pour laquelle différentes versions d'Excel utilisent des dates différentes?
À l'exception du véritable programmeur, personne d'autre ne saura jamais pourquoi ces types de décisions ont été prises.
Et...
Peu importe pourquoi la date a été choisie. C'était juste.
Les astronomes utilisent leur propre date d'époque: http://en.wikipedia.org/wiki/Epoch_ (astronomie)
Pourquoi? Une date doit être choisie pour que les mathématiques fonctionnent. Toute date aléatoire fonctionnera.
Une date lointaine dans le passé évite les chiffres négatifs pour le cas général.
Certains des paquets les plus intelligents utilisent l'année grégorienne proleptique 1. Une raison pour laquelle l'année 1?
Il y a une raison donnée dans des livres comme Calculs Calendriers: c'est mathématiquement un peu plus simple.
Mais si vous y réfléchissez, la différence entre 1/1/1 et 1/1/1970 n'est que de 1969, un décalage mathématique trivial.
pourquoi son toujours 1er janvier 1970, parce que - "1er janvier 1970" généralement appelé comme "date d'époque" est la date à laquelle l'heure a commencé pour les ordinateurs Unix, et cet horodatage est marqué comme "0". Tout temps écoulé depuis cette date est calculé en fonction du nombre de secondes écoulées. En termes plus simples ... l'horodatage de n'importe quelle date sera la différence en secondes entre cette date et '1er janvier 1970' L'horodatage est juste un entier qui a commencé à partir du nombre '0' sur 'Minuit 1er janvier 1970' et continue à incrémenter par '1' à chaque deuxième passage Pour la conversion des horodatages UNIX en dates lisibles PHP et d'autres langages open source fournissent des fonctions intégrées.
Q) "Pourquoi les dates sont-elles calculées à partir du 1er janvier 1970?"
A) Il devait être aussi récent que possible, mais inclure du passé . Il n'y avait probablement aucune autre raison importante, car beaucoup de gens pensent de la même façon.
Ils savaient que cela poserait un problème s'ils le plaçaient trop loin dans le passé et ils savaient que cela donnerait des résultats négatifs si c'était à l'avenir. Il n'était pas nécessaire d'aller plus loin dans le passé, car les événements auront probablement lieu à l'avenir.
Notes: Les mayas, d'autre part, avaient besoin de placer les événements dans le passé, car ils avaient la connaissance de beaucoup de passé, pour lesquels ils ont fait un calendrier à long terme. Juste pour placer tous les phénomènes de routine sur le calendrier.
L'horodatage n'était pas censé être un calendrier, c'est une époque. Et je crois que les Mayas ont fait leur calendrier à long terme en utilisant cette même perspective. (ce qui signifie qu'ils savaient sacrément bien qu'ils n'avaient aucune relation avec le passé, ils avaient juste besoin de le voir à plus grande échelle)
Oui, C (et sa famille). C'est là que Java l'a aussi amené.