Warum werden Daten ab dem 1. Januar 1970 berechnet?

94

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.

Vijay Shanker Dubey
quelle
1
Eine andere beliebte Sprache, die dem gleichen Standard folgt, ist PHP, ein ziemlich häufiger Startpunkt.
Greg K

Antworten:

65

Dies ist der Standard der Unix-Zeit.

Die Unix-Zeit oder POSIX-Zeit ist ein System zur Beschreibung von Zeitpunkten, definiert als die Anzahl der Sekunden, die seit der proleptischen koordinierten Weltzeit (UTC) um Mitternacht vom 1. Januar 1970 vergangen sind, ohne Schaltsekunden.

soldat.motte
quelle
5
Wissen Sie, ob Kernighan und Thompson jeweils einen Grund angegeben haben, diesen Moment jenseits von "Es ist eine runde Zahl, kurz bevor wir mit dem Bau des Dings begonnen haben" zu wählen?
dmckee --- Ex-Moderator Kätzchen
Es ist der Beginn eines Jahres, es liegt in der Zeitzone Null (Zulu). Beides vereinfacht den Datumsformatierungscode.
Donal Fellows
28
Zählt keine Schaltsekunden? Ich kannte dieses Detail nicht. Nachdem ich ein paar Momente darüber nachgedacht habe, kann ich sehen, warum Sie es so machen würden, aber Mann. Meine Welt ist zerstört. um 24 Sekunden.
Keturn
69

Verwenden des Datums (1. Januar 1970) als Standardstandard

Die Frage macht zwei falsche Annahmen:

  • Die gesamte Zeiterfassung im Computer erfolgt seit 1970 als Zählung.
  • Eine solche Verfolgung ist Standard.

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.

0. Januar, 1 v

1. Januar 1 n. Chr

15. Oktober 1582

1. Januar 1601

31. Dezember 1840

17. November 1858

30. Dezember 1899

31. Dezember 1899

1. Januar 1900

1. Januar 1904

31. Dezember 1967

1. Januar 1980

6. Januar 1980

1. Januar 2000

1. Januar 2001

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:

  • Unzählige Millionen (Milliarden?) Microsoft Excel & Lotus 1-2-3-Dokumente werden verwendet January 0, 1900(31. Dezember 1899).
  • Die Welt hat jetzt über eine Milliarde iOS / OS X-Geräte , die die Cocoa (NSDate) -Epoche von verwenden1 January 2001, GMT .
  • Das GPS- Satellitennavigationssystem verwendet, January 6, 1980während die europäische Alternative Galileo verwendet 22 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.SSSZwie z 2014-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.

Diagramm mit verschiedenen Software-Zählungen ab Epoche in Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden.

Basil Bourque
quelle
1
Ich frage mich, was die dominierende Epoche in diesem Moment ist ... haben Sie sie auf Daten gestützt?
PascalVKooten
1
@PascalVKooten Viele verschiedene Epochen werden in vielen verschiedenen Umgebungen und Softwaresystemen verwendet. Es gibt also keine dominante Epoche. Mein Punkt hier ist, niemals die Epoche anzunehmen. Kennen Sie Ihre Datenquelle. Der beste Ansatz ist, dass eine Datenquelle das Epochenproblem vollständig vermeidet und nur ISO 8601-Zeichenfolgen verwendet, IMHO.
Basil Bourque
1
Danke für deine Antwort. Ich verstehe, dass es viele gibt, aber ich bin gespannt, ob z. B. POSIX im Laufe der Zeit populärer wurde.
PascalVKooten
7

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.

Friyank
quelle
5

Gibt es einen Grund für die Verwendung des Datums (1. Januar 1970) als Standard für die Zeitmanipulation?

Kein Grund, der zählt.

Pythons timeModul 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.

S.Lott
quelle
1
Wenn 1/1/1 gewählt worden wäre, wären uns inzwischen die Sekunden (2 ^ 31) ausgegangen. Derzeit stehen wir vor einem Y2K-ähnlichen Problem im Jahr 2038 für 32-Bit-Betriebssysteme. en.wikipedia.org/wiki/Year_2038_problem
Chris Nava
1
@ Chris Nava: Die Leute, die 1/1/1 verwenden, zählen Tage, nicht Sekunden. 2 Milliarden Tage sind ungefähr 5 Millionen Jahre. Oft behalten sie ein Paar (Tag, Zeit) bei, um die Zeitauflösung zu maximieren. In den meisten Tagen gibt es nur 86400 Sekunden.
S.Lott
@ S.Lott: Ja. Ich habe nur darauf hingewiesen, dass 1/1/1 in der Vergangenheit zu weit in der Vergangenheit war, um ein vernünftiges Startdatum zu sein, da die meisten Programme Sekunden (nicht Minuten) seit der Epoche zählen. Daher wurde ein neueres Datum als Computer-Epoche gewählt (und durch Vereinigung der Beginn der IT-Revolution. ;-)
Chris Nava
@ Chris Nava: "am meisten"? Ich nehme an, mit "den meisten" meinen Sie "Linux". Andere Betriebssysteme funktionieren nicht so wie Linux. Das Problem ist, dass "vernünftig" und "warum 01.01.1970?" sind keine leicht zu beantwortenden Fragen; Am wichtigsten ist, dass die Antwort keine Rolle spielt. "vernünftig" ist wahr, aber es ist nicht der Grund warum . Der Grund dafür ist etwas, das nur Ken Thompson beantworten kann.
S.Lott
5

Der 1. Januar 1970, 00:00:00 Uhr, ist der Nullpunkt der POSIX-Zeit .

Benjamin Bannier
quelle
2

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)

Yezpahr
quelle
1

Ja, C (und seine Familie). Hier hat es auch Java aufgenommen.

Péter Török
quelle