Y a-t-il une raison d'utiliser la date (1er janvier 1970) comme norme par défaut pour la manipulation de l'heure? J'ai vu ce standard en Java ainsi qu'en Python. Je connais ces deux langues. Existe-t-il d'autres langues populaires qui suivent la même norme?
Décrivez s'il vous plait.
java
python
programming-languages
Vijay Shanker Dubey
la source
la source
Réponses:
C'est la norme du temps Unix.
la source
La question fait deux fausses hypothèses:
Deux douzaines d'époques
Le temps en informatique n'est pas toujours suivi depuis le début de 1970 UTC . Bien que cette référence d'époque soit populaire, divers environnements informatiques au cours des décennies ont utilisé au moins près de deux douzaines d'époques . Certains sont d'autres siècles. Ils vont de l'année 0 (zéro) à 2001.
Voici quelques-uns.
Epoque Unix commune, mais pas dominante
Le début de 1970 est populaire, probablement en raison de son utilisation par Unix. Mais ce n'est en aucun cas dominant. Par exemple:
January 0, 1900
(31 décembre 1899).1 January 2001, GMT
.January 6, 1980
alors que l'alternative européenne Galileo utilise22 August 1999
.ISO 8601
En supposant qu'un compte depuis l'époque utilise l'époque Unix, cela ouvre une grande vulnérabilité aux 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 à la place de sérialiser les valeurs date-heure sous forme de chaînes ISO 8601 non ambiguës pour l'échange de données plutôt que d'un nombre entier depuis l'époque:
YYYY-MM-DDTHH:MM:SS.SSSZ
comme2014-10-14T16:32:41.018Z
.Compte de quoi depuis l'époque
Un autre problème avec le suivi temporel du décompte depuis l'époque est l'unité de temps, avec au moins quatre niveaux de résolution couramment utilisés.
Les installations Unix d'origine utilisaient des secondes entières, conduisant au problème de l' année 2038 lorsque nous atteignons la limite des secondes depuis 1970 si elles sont stockées sous forme d'entier 32 bits.
Utilisé par les anciennes bibliothèques Java, y compris la classe java.util.Date et la bibliothèque Joda-Time .
Utilisé par les bases de données telles que Postgres .
Utilisé par le nouveau package java.time dans Java 8.
la source
pourquoi c'est toujours le 1er janvier 1970, Parce que - «1er janvier 1970», généralement appelé «date d'époque», est la date à laquelle l'heure a commencé pour les ordinateurs Unix, et cet horodatage est marqué comme «0». Tout moment 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 le `` 1er janvier 1970 ''. par '1' à chaque seconde passe Pour la conversion des horodatages UNIX en dates lisibles, PHP et d'autres langages open source fournissent des fonctions intégrées.
la source
Aucune raison qui compte.
Le
time
module de Python est la bibliothèque C. Demandez à Ken Thompson pourquoi il a choisi cette date pour une date historique. 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?
À part le programmeur réel, personne d'autre ne saura jamais pourquoi ce genre de décisions a été prise.
Et...
Peu importe la raison pour laquelle la date a été choisie. C'était juste.
Les astronomes utilisent leur propre date d'époque: http://en.wikipedia.org/wiki/Epoch_(astronomy)
Pourquoi? Une date doit être choisie pour faire travailler les mathématiques. Toute date aléatoire fonctionnera.
Une date loin dans le passé évite les nombres négatifs pour le cas général.
Certains des packages les plus intelligents utilisent l'année proleptique grégorienne 1. Une raison pour laquelle l'année 1?
Il y a une raison donnée dans des livres comme les calculs calendaires: c'est mathématiquement un peu plus simple.
Mais si vous y réfléchissez bien, la différence entre 1/1/1 et 1/1/1970 n'est que de 1969, un décalage mathématique trivial.
la source
Le 1er janvier 1970 00:00:00 est le point zéro de l' heure POSIX .
la source
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 significative, car beaucoup de gens ressentent la même chose.
Ils savaient que cela posait un problème s'ils le placaient trop loin dans le passé et ils savaient que cela donnait des résultats négatifs si c'était dans le futur. Il n'était pas nécessaire d'aller plus loin dans le passé car les événements se produiront très probablement dans le futur.
Notes: Les mayas, par contre, avaient le besoin de replacer 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'a pas été conçu comme un calendrier, c'est une époque. Et je crois que les mayas ont fait leur calendrier à long terme en utilisant la même perspective. (ce qui signifie qu'ils savaient très bien qu'ils n'avaient aucune relation avec le passé, ils avaient juste besoin de le voir à plus grande échelle)
la source
Oui, C (et sa famille). C'est là que Java l'a également emporté.
la source