Gibt es einen Grund für die Verwendung des Datums (1. Januar 1970) als Standardstandard für die Zeitmanipulation? Ich habe diesen Standard sowohl in Java als auch in Python gesehen. Diese beiden Sprachen sind mir bekannt. Gibt es andere populäre Sprachen, die dem gleichen Standard folgen?
Bitte beschreiben.
java
python
programming-languages
Vijay Shanker Dubey
quelle
quelle
Antworten:
Dies ist der Standard der Unix-Zeit.
quelle
Die Frage macht zwei falsche Annahmen:
Zwei Dutzend Epochen
Die Zeit im Computer wird nicht immer ab Anfang 1970 erfasst UTC erfasst . Während diese Epochenreferenz beliebt ist, haben verschiedene Computerumgebungen im Laufe der Jahrzehnte mindestens zwei Dutzend Epochen verwendet . Einige stammen aus anderen Jahrhunderten. Sie reichen von Jahr 0 (Null) bis 2001.
Hier sind ein paar.
Unix Epoch Common, aber nicht dominant
Der Anfang des Jahres 1970 ist beliebt, wahrscheinlich wegen seiner Verwendung durch Unix. Aber das ist keineswegs dominant. Beispielsweise:
January 0, 1900
(31. Dezember 1899).1 January 2001, GMT
.January 6, 1980
während die europäische Alternative Galileo verwendet22 August 1999
.ISO 8601
Die Annahme, dass eine Count-Since-Epoche die Unix-Epoche verwendet, eröffnet eine große Sicherheitslücke für Fehler. Eine solche Zählung kann ein Mensch nicht sofort entschlüsseln, sodass Fehler oder Probleme beim Debuggen und Protokollieren nicht einfach gekennzeichnet werden können. Ein weiteres Problem ist die unten erläuterte Mehrdeutigkeit der Granularität.
Ich empfehle dringend, Datums- und Uhrzeitwerte als eindeutige ISO 8601- Zeichenfolgen für den Datenaustausch zu serialisieren und nicht als Ganzzahl seit Epoche:
YYYY-MM-DDTHH:MM:SS.SSSZ
wie z2014-10-14T16:32:41.018Z
.Anzahl von was seit der Epoche
Ein weiteres Problem bei der Zeiterfassung seit der Epoche ist die Zeiteinheit mit mindestens vier üblicherweise verwendeten Auflösungsstufen.
Die ursprünglichen Unix-Funktionen verwendeten ganze Sekunden, was zum Problem des Jahres 2038 führte, wenn wir das Sekundenlimit seit 1970 erreichen, wenn es als 32-Bit-Ganzzahl gespeichert wird.
Wird von älteren Java-Bibliotheken verwendet, einschließlich der gebündelten Klasse java.util.Date und der Joda-Time- Bibliothek.
Wird von Datenbanken wie Postgres verwendet .
Wird vom neuen Paket java.time in Java 8 verwendet.
quelle
warum es immer der 1. Januar 1970 ist, weil - "1. Januar 1970", normalerweise als "Epochendatum" bezeichnet, das Datum ist, an dem die Zeit für Unix-Computer gestartet wurde und dieser Zeitstempel als "0" markiert ist. Jede Zeit seit diesem Datum wird basierend auf der Anzahl der verstrichenen Sekunden berechnet. In einfacheren Worten ... der Zeitstempel eines Datums ist die Differenz in Sekunden zwischen diesem Datum und dem 1. Januar 1970. Der Zeitstempel ist nur eine Ganzzahl, die mit der Nummer '0' am 1. Januar 1970 um Mitternacht beginnt und sich weiter erhöht durch '1' bei jedem zweiten Durchgang Für die Konvertierung von UNIX-Zeitstempeln in lesbare Daten bietet PHP und andere Open-Source-Sprachen integrierte Funktionen.
quelle
Kein Grund, der zählt.
Pythons
time
Modul ist die C-Bibliothek. Fragen Sie Ken Thompson, warum er dieses Datum für ein epochales Datum gewählt hat. Vielleicht hatte jemand Geburtstag.Excel verwendet zwei verschiedene Epochen. Gibt es einen Grund, warum unterschiedliche Excel-Versionen unterschiedliche Daten verwenden?
Außer dem eigentlichen Programmierer wird niemand sonst jemals wissen warum solche Entscheidungen getroffen wurden.
Und...
Es ist egal warum das Datum gewählt wurde. Es war einfach so.
Astronomen verwenden ihr eigenes epochales Datum: http://en.wikipedia.org/wiki/Epoch_(astronomy)
Warum? Es muss ein Datum ausgewählt werden, damit die Mathematik funktioniert. Jedes zufällige Datum wird funktionieren.
Ein Datum weit in der Vergangenheit vermeidet negative Zahlen für den allgemeinen Fall.
Einige der intelligenteren Pakete verwenden das proleptische Gregorianische Jahr 1. Gibt es einen Grund, warum Jahr 1?
In Büchern wie Calendrical Calculations gibt es einen Grund: Es ist mathematisch etwas einfacher.
Aber wenn Sie darüber nachdenken, ist der Unterschied zwischen 1/1/1 und 1/1/1970 nur 1969, ein trivialer mathematischer Versatz.
quelle
Der 1. Januar 1970, 00:00:00 Uhr, ist der Nullpunkt der POSIX-Zeit .
quelle
F) "Warum werden Daten ab dem 1. Januar 1970 berechnet?"
A) Es musste so aktuell wie möglich sein, aber einige enthalten Vergangenheit enthalten. Es gab höchstwahrscheinlich keinen signifikanten anderen Grund, da viele Menschen genauso denken.
Sie wussten, dass es ein Problem darstellt, wenn sie es zu weit in die Vergangenheit verschieben, und sie wussten, dass es negative Ergebnisse liefert, wenn es in der Zukunft liegt. In der Vergangenheit war es nicht nötig, tiefer zu gehen, da die Ereignisse höchstwahrscheinlich in der Zukunft stattfinden werden.
Anmerkungen: Die Mayas hatten andererseits die Notwendigkeit, Ereignisse in die Vergangenheit zu stellen, da sie das Wissen über eine Menge Vergangenheit hatten, für die sie einen Langzeitkalender erstellten. Nur um alle Routinephänomene auf den Kalender zu setzen.
Der Zeitstempel war nicht als Kalender gedacht, sondern eine Epoche. Und ich glaube, die Mayas haben ihren Langzeitkalender aus derselben Perspektive erstellt. (was bedeutet, dass sie verdammt gut wussten, dass sie keine Beziehung zur Vergangenheit hatten, sie mussten sie nur in größerem Maßstab sehen)
quelle
Ja, C (und seine Familie). Hier hat es auch Java aufgenommen.
quelle