Ändern sich Unix-Zeitstempel über Zeitzonen hinweg?


136

Wie das Thema fragt; Ändern sich UNIX-Zeitstempel in jeder Zeitzone?

Wenn ich beispielsweise eine Anfrage an eine andere E-Mail auf der anderen Seite der Welt senden würde, die besagt: "Senden Sie eine E-Mail, wenn die Zeit 1397484936 ist" , liegt der Zeitstempel des anderen Servers 12 Stunden hinter meinem eigenen?


7
Nein, es ist die Anzahl der Sekunden, die seit einem bestimmten Zeitpunkt vergangen sind.
Niklas B.

Antworten:


228

Die Definition des UNIX-Zeitstempels ist zeitzonenunabhängig. Der Zeitstempel ist die Anzahl der Sekunden (oder Millisekunden), die seit einem absoluten Zeitpunkt, Mitternacht des 1. Januar 1970 in UTC-Zeit, vergangen sind. (UTC ist die mittlere Greenwich-Zeit ohne Sommerzeitanpassung.) Unabhängig von Ihrer Zeitzone repräsentiert ein Zeitstempel einen Moment, der überall gleich ist. Natürlich können Sie hin und her in eine lokale Zeitzonendarstellung konvertieren (Zeit 1397484936 ist die eine oder andere Ortszeit in New York oder eine andere Ortszeit in Djakarta), wenn Sie möchten.

Der Artikel unter http://en.wikipedia.org/wiki/Unix_time ist ziemlich beeindruckend, wenn Sie länger lesen möchten.


19
In meinem anderen Leben bin ich Fluglehrer. Wir verwenden UTC (auch als "Zulu-Zeit" bekannt) für Start- und Landezeiten, sodass die Differenz zwischen den Zeiten eine genaue Messung der Fluglänge ist, ohne berücksichtigen zu müssen, in welcher Zeitzone sich die Start- und Endflughäfen befinden In der Tat habe ich Flüge genommen, die in der Sommerzeit begannen und danach endeten, oder umgekehrt!
RobP

19
+1 auf diese Antwort. Um eine Idee hinzuzufügen, die zur Verdeutlichung beitragen könnte: Der Zeitstempel selbst ist nicht UTC, der Zeitstempel ist eine Anzahl von (Milli-) Sekunden, die von einem Referenzzeitpunkt vergangen sind. Der Referenzpunkt für den Unix-Zeitstempel (die Unix-Epoche) ist der UTC: 00:00:00 UTC 1970.01.01
Sandman

4
1397484936 Sekunden nach dem Start sind genau das, 1397484936 Sekunden. Ohne auf andere Wissenschaft einzugehen, sind zu diesem Zeitpunkt überall auf der Welt 1397484936 Sekunden vergangen. Wenn diese 1397484936 Sekunden verstrichen sind, könnte es 16 Uhr 16:16:00 in New York, 21 Uhr 21 Uhr in London sein, was lokale Zeitzonen sind
conrad10781

1
@RobP Das stimmt nicht. UNIX ist nicht zeitzonenunabhängig, Sie haben es selbst gesagt in UTC time. Es gibt zwei Offsets, a raw offsetund DST offset. Zum Beispiel America/New_Yorkist der -18000Rohversatz und der Sommerzeitversatz 3600so, dass Sie von jedem UNIX-Zeitstempel aus rechnen UNIX + offset + dstOffsetmüssen, um den New Yorker Zeitstempel zu erhalten.
Max

15

Die Unix-Zeit ist definiert als die Anzahl der Sekunden, die seit 00:00:00 Coordinated Universal Time ( UTC ), Donnerstag, 1. Januar 1970 , vergangen sind . Die Antwort lautet also nein


5

Wenn beide Computer korrekt eingerichtet sind und ihre Uhren auf die richtigen Zeitzonen- und UTC-Werte eingestellt sind, sollten sie denselben Wert zurückgeben.
Das ist natürlich eine große WENN. Es gibt fast sicher einen Unterschied von mindestens einer Sekunde, häufiger Minuten zwischen der von zwei Computern gemeldeten Zeit. Viele Computer sind für falsche Zeitzoneneinstellungen eingerichtet und geben ihre Ortszeit an, wenn sie nach einem Zeitstempel und nicht nach UTC gefragt werden.

Und darin liegt der Unterschied zwischen Theorie und Praxis. Theoretisch ist es egal, in der Praxis sollte man sich niemals darauf verlassen.


3

Unix-Zeitstempel ändern sich nicht über Zeitzonen hinweg , sondern werden zum Zweck einer weltweiten Standardzeit erstellt.

HINWEIS: - Zeitstempel werden auf der Grundlage der aktuellen Zeit im Computer berechnet. Verlassen Sie sich daher erst dann auf sie, wenn Sie sich über die Zeiteinstellungen auf den teilnehmenden Computern sehr sicher sind.


2

Jemand gab an, dass "UTC die mittlere Greenwich-Zeit ohne Sommerzeitanpassungen ist." Das ist einfach falsch. GMT hat keine Sommerzeit. GMT wird in Greenwich, England (am Naval Obeservatory) gemessen [0 Längengrad, aber nicht 0 Längengrad]. UTC wird am Äquator gemessen [0 Längengrad und 0 Längengrad - der zufällig im Ozean vor den Kosten Afrikas liegt].

Welchen Unterschied macht es? Es macht keinen Unterschied in Bezug auf "wie spät ist es?" Bei der Berechnung eines Jahres macht es jedoch einen Unterschied. Jetzt würden Sie denken, ein Jahr würde anhand der Position des Zentrums (des Kerns) der Erde gemessen, oder? Als sich der Erdkern wieder an derselben Stelle befindet wie vor ~ 365 Tagen, war es ein Jahr. Es wird nicht so gemessen. Es wird an einem bestimmten Ort auf der Erde gemessen, der an denselben Ort (relativ zur Sonne) zurückkehrt, an dem er vor ~ 365 Tagen war. Aber der Zeitraum eines Tages und eines Jahres teilt sich nicht gleichmäßig. Sobald die Erde wieder ungefähr dort ist, wo sie vor einem Jahr war, zeigt die Erde nicht mehr in die gleiche Richtung wie im letzten Jahr, so dass der Punkt auf der Erde nicht in die gleiche Richtung zeigt wie vor einem Jahr. Weiter nördlich sein, Greenwich wird nicht an den gleichen Ort (relativ zur Sonne) zurückkehren, an dem es letztes Jahr war, zur gleichen Zeit wie 0 Lat / 0 Long. Wenn Sie also die Definition auf Greenwith vs. 0/0 stützen, erhalten Sie eine, wenn auch etwas andere Antwort auf die Frage "Wie viele Tage in einem Jahr sind". Anders ausgedrückt: Wenn ein bestimmter Punkt auf der Erde wieder an den Ort zurückkehrt, an dem er vor einem Jahr war (relativ zur Sonne), befindet sich der Erdkern nicht an dem Ort, an dem er vor einem Jahr war, also an welchem ​​Ort Sie wählen Dinge aus, weil sich der Erdkern an einem anderen Ort (relativ zur Sonne) befindet als vor einem Jahr, wenn Sie einen anderen Ort auf der Erde auswählen. wenn auch etwas andere Antwort auf die Frage "Wie viele Tage in einem Jahr sind". Anders ausgedrückt: Wenn ein bestimmter Punkt auf der Erde wieder an den Ort zurückkehrt, an dem er vor einem Jahr war (relativ zur Sonne), befindet sich der Erdkern nicht an dem Ort, an dem er vor einem Jahr war, also an welchem ​​Ort Sie wählen Dinge aus, weil sich der Erdkern an einem anderen Ort (relativ zur Sonne) befindet als vor einem Jahr, wenn Sie einen anderen Ort auf der Erde auswählen. wenn auch etwas andere Antwort auf die Frage "Wie viele Tage in einem Jahr sind". Anders ausgedrückt: Wenn ein bestimmter Punkt auf der Erde wieder an den Ort zurückkehrt, an dem er vor einem Jahr war (relativ zur Sonne), befindet sich der Erdkern nicht an dem Ort, an dem er vor einem Jahr war, also an welchem ​​Ort Sie wählen Dinge aus, weil sich der Erdkern an einem anderen Ort (relativ zur Sonne) befindet als vor einem Jahr, wenn Sie einen anderen Ort auf der Erde auswählen.

Weder UTC noch GMT haben Sommerzeit. Europa / London-Zeit, die Zeitzone, in der Greenwich lebt, tut dies. GMT jedoch nicht. GMT ist, was Amerikaner eine "Standardzeit" nennen würden - dh ohne Sommerzeit.

Zurück zur Frage: Die Epochenzeit hat technisch gesehen keine Zeitzone. Es basiert auf einem bestimmten Zeitpunkt, der zufällig auf eine "gerade" UTC-Zeit (genau zu Beginn eines Jahres und eines Jahrzehnts usw.) ausgerichtet ist. Wenn dieses Konzept nicht gut in Ihr Gehirn passt und es hilfreich ist, sich die Epochenzeit als UTC vorzustellen, fahren Sie fort. Sie sind in guter Gesellschaft und im großen Stil der Dinge, es ist wirklich egal. Sie sehen jemals solche Gerichtsverfahren, bei denen jemand 1 US-Dollar erhält. Es ist eine Art Urteil "Sie haben Recht, aber es spielt keine Rolle". Wenn jemand Sie verklagt, weil Sie sagen, dass die Epochenzeit in der UTC-Zeitzone liegt, würde er 1 $ gewinnen. Das würde ihnen in keiner Zeitzone der Welt eine Tasse Kaffee bei Starbucks kaufen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.