Ich entschuldige mich bei
Patrick Mackenzie .
Danny erkundigte sich gestern nach merkwürdigen Fakten über die Unix-Zeit und ich erinnerte mich, dass es manchmal völlig unintuitiv funktioniert.
Diese drei Tatsachen scheinen äußerst vernünftig und logisch zu sein, oder?
- Die Unix-Zeit ist die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 UTC.
- Wenn Sie genau eine Sekunde warten, ändert sich die Unix-Zeit genau um eine Sekunde.
- Die Unix-Zeit bewegt sich niemals rückwärts.
Das alles ist nicht wahr.
Es reicht jedoch nicht aus, nur "All dies ist falsch" zu sagen, ohne zu erklären,
warum . Eine Erklärung finden Sie unten. Aber wenn Sie selbst denken möchten, scrollen Sie nicht um die Uhr!
Tischuhr der 1770er Jahre. Zusammengestellt von John Leroux. Aus der Wellcome-Sammlung . Veröffentlicht unter CC BYAlle drei Irrtümer haben einen Grund:
Schaltsekunden . Wenn Sie mit zusätzlichen Sekunden nicht vertraut sind, finden Sie hier eine Kurzreferenz:
Die UTC-Zeit wird durch zwei Faktoren bestimmt:
- Internationale Atomzeit : Gemittelte Messwerte von Hunderten von Atomuhren auf der ganzen Welt. Wir können eine Sekunde an den elektromagnetischen Eigenschaften eines Atoms messen, und dies ist die genaueste Zeitmessung, die der Wissenschaft bekannt ist.
- Weltzeit , basierend auf der Rotation der Erde um ihre eigene Achse. Eine volle Runde - ein Tag.
Das Problem ist, dass diese beiden Zahlen nicht immer übereinstimmen. Die Rotation der Erde ist nicht konsistent - sie verlangsamt sich allmählich, so dass der Tag in der Weltzeit länger wird. Andererseits sind Atomuhren über Millionen von Jahren teuflisch genau und konstant.
Wenn zwei Mal nicht synchron sind, wird in UTC eine Sekunde hinzugefügt oder entfernt, um die Synchronisation wiederherzustellen. Seit 1972 hat der
IERS- Dienst (der diesen Fall
ausführt ) 27 zusätzliche Sekunden hinzugefügt. Das Ergebnis waren 27 Tage UTC mit einer Dauer von 86.401 Sekunden. Theoretisch ist das Auftreten eines Tages mit einer Dauer von 86 399 Sekunden (minus eins) möglich. Beide Optionen widersprechen der Grundannahme der Unix-Zeit.
Die Unix-Zeit setzt voraus, dass jeder Tag genau 86.400 Sekunden dauert (60 × 60 × 24 = 86.400), ohne zusätzliche Sekunden. Wenn ein solcher Sprung auftritt, springt die Unix-Zeit entweder nach einer Sekunde oder durch Zählen von zwei Sekunden in einer. Ab 2019 fehlen 27 Schaltsekunden.
Unsere Fehler müssen also wie folgt ergänzt werden:
- Die Unix-Zeit ist die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 UTC minus Schaltsekunden .
- Wenn Sie genau eine Sekunde warten, ändert sich die Unix-Zeit genau um eine Sekunde, wenn die zusätzliche Sekunde nicht gelöscht wurde .
In der Praxis wurden bisher noch nie Sekunden entfernt (und eine Verlangsamung der Erdrotation bedeutet, dass dies unwahrscheinlich ist). Sollte dies jedoch jemals passieren, würde dies bedeuten, dass der UTC-Tag eine Sekunde kürzer war. In diesem Fall wird die letzte Sekunde von UTC (23:59:59) verworfen.
Jeder Unix-Tag hat die gleiche Anzahl von Sekunden, sodass die letzte Unix-Sekunde eines verkürzten Tages keiner UTC-Zeit entspricht. So sieht es in Intervallen von einer Viertelsekunde aus:

Wenn Sie um 23: 59: 58: 00 UTC beginnen und eine Sekunde warten, wird die Unix-Zeit um zwei Sekunden UTC vorverlegt, und der Unix 101-Zeitstempel wird niemandem zugewiesen.
- Die Unix-Zeit kann niemals zurückgehen, bis eine zusätzliche Sekunde hinzugefügt wird .
Dies ist in der Praxis bereits 27 Mal passiert. Am Ende des Tages UTC fügen Sie eine zusätzliche Sekunde 23:59:60 hinzu. Unix-Tage haben die gleiche Anzahl von Sekunden, daher kann keine zusätzliche Sekunde hinzugefügt werden. Stattdessen müssen Sie Unix-Zeitstempel für die letzte Sekunde wiederholen. So sieht es in Intervallen von einer Viertelsekunde aus:

Wenn Sie um 23: 59: 60.50 Uhr beginnen und eine halbe Sekunde warten, gibt die Unix-Zeit eine halbe Sekunde zurück, und der Unix 101-Zeitstempel entspricht zwei Sekunden UTC.
Dies sind wahrscheinlich nicht die einzigen Kuriositäten der Unix-Zeit - genau das, woran ich mich gestern erinnerte.
Zeit ist eine
sehr seltsame Sache.