2 Punkte von GN⁺ 2024-12-27 | 1 Kommentare | Auf WhatsApp teilen
  • Sekunden seit der Epoch

    • POSIX-Zeit oder Unix-Zeit wird gemeinhin als die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 beschrieben. Das ist jedoch nicht ganz korrekt. Zum Beispiel ist die POSIX-Zeit für den 25. Dezember 2024, 18:54:53 UTC, 1735152686 und liegt damit um 29 Sekunden unter den tatsächlich verstrichenen 1735152715 Sekunden.

    • POSIX-Zeit ist in IEEE 1003.1 von der koordinierten Weltzeit (UTC) abgeleitet. Der Standard nimmt an, dass jeder Tag genau 86.400 Sekunden hat. Tatsächlich ist ein Tag aber nicht 86.400 Sekunden lang, und seine Länge verändert sich im Laufe der Zeit. Um das auszugleichen, deklarieren Astronomen periodisch Schaltsekunden in UTC.

  • Archäologie

    • Anhang B von IEEE 1003 enthält eine interessante Diskussion über Schaltsekunden. Als der Standard veröffentlicht wurde, waren seit dem 1. Januar 1970 14 Schaltsekunden hinzugefügt worden. Diese Schaltsekunden werden ignoriert, um Zeitdifferenzen leichter berechnen zu können.

    • Die meisten Systeme behandeln Zeit als einen kontinuierlich ansteigenden Wert. Die meisten Systeme verfolgen jedoch keine Schaltsekunden und sind nicht mit einer standardisierten Zeitreferenz synchronisiert. Daher ist die Forderung unangebracht, dass Sekunden seit der Epoch die Sekunden zwischen der referenzierten Zeit und der Epoch exakt darstellen müssen.

    • Eine konsistente Interpretation der Sekunden seit der Epoch kann für bestimmte Arten verteilter Anwendungen wichtig sein. Die Anhäufung von Schaltsekunden ist nicht vorhersagbar, und die Anzahl der Schaltsekunden seit der Epoch wird wahrscheinlich weiter steigen.

  • Was man stattdessen tun sollte

    • Um die Dauer zwischen zwei Ereignissen auf einem einzelnen Computer zu berechnen, sollte CLOCK_MONOTONIC verwendet werden. Wenn keine POSIX-Zeiten mit anderen Systemen ausgetauscht werden müssen, können TAI, GPS oder LORAN verwendet werden.

    • Wenn eine ungefähre Ausrichtung an einem POSIX-Timestamp-System erforderlich ist, können Schaltsekunden über ein längeres Zeitfenster verteilt werden. Bibliotheken wie qntms t-a-i unterstützen die Umwandlung zwischen POSIX und TAI.

    • Es laufen Bemühungen, Schaltsekunden abzuschaffen, und man hofft, dies bis 2035 abzuschließen. Das würde zusätzliche Arbeit erfordern, um Umrechnungstabellen für alles zu erstellen, das die Annahme „ein Tag hat 86.400 Sekunden“ verwendet, aber die Frage nach den Sekunden zwischen zwei Zeitpunkten würde einfacher werden. Zumindest für Zeiten nach 2035.

1 Kommentare

 
GN⁺ 2024-12-27
Hacker-News-Kommentare
  • Ich habe das SF-Buch "A Deepness in the Sky" gelesen. Die Erwähnung von Sekunden seit der Epoche im Buch fand ich interessant.

    • Die Zeitmessungsmethode der Qeng Ho war komplex und begann, Sekunden ab dem Moment zu zählen, in dem der Mensch erstmals den Mond betrat.
    • Der Startzeitpunkt lag tatsächlich etwa 15 Millionen Sekunden später, und das war Sekunde 0 des frühen Computerbetriebssystems.
  • Es gibt Bestrebungen, Schaltsekunden abzuschaffen, und man hofft, dies bis 2035 abzuschließen.

    • Der Zweck von UTC ist es, im Abstand einer ganzzahligen Anzahl von Sekunden zu TAI zu liegen und dabei die mittlere Sonnenzeit anzunähern.
    • Wenn man MST nicht nachverfolgen will, muss man zu TAI wechseln, und sobald sich UTC von MST entfernt, verlieren historische Schaltsekunden ihre Bedeutung.
  • Die moderne "UTC-Epoche" ist der 1. Januar 1972.

    • Ende 1971 gab es einen unregelmäßigen Sprung von 0,107758 TAI-Sekunden, danach wurde die Tickrate von UTC so geändert, dass sie exakt mit TAI übereinstimmt.
    • Die Unix-Zeit von 1970 und 1971 stimmt tatsächlich nicht mit der UTC-Zeit dieses Zeitraums überein.
  • Jedes Mal, wenn ich etwas über Zeitmessung lese, lerne ich etwas Neues.

    • Ich dachte, Unix-Zeit sei die einfachste Methode zur Zeitverfolgung.
    • Ich dachte, dass keine Schaltsekunden angewendet würden, aber offenbar hatte ich nicht gründlich genug darüber nachgedacht.
  • Ich habe kürzlich an Code für eine VAX oder für Code gearbeitet, der auf OpenVMS läuft, und dort zum ersten Mal gesehen, dass die Epoche der 17. November 1858 ist.

    • Im Code war das auf die Unix-Epoche abstrahiert.
  • Einige Zeitpunkte lassen sich nicht als POSIX-Zeitstempel darstellen, und einige POSIX-Zeitstempel entsprechen keiner realen Zeit.

  • Ich finde, dieser Artikel hat mir Weihnachten verdorben.

    • Sekunden sollten Sekunden seit der Epoche sein, und es sollte egal sein, ob sie sich vom Sonnentag entfernen.
    • Der Sekunden-zu-Epoche-Konverter sollte die Korrekturen übernehmen.
  • Beim Speichern von Datumswerten in einer Datenbank speichere ich sie immer als Unix-Epochenzeit, und Informationen zur Zeitzone speichere ich separat.

    • Ich überlege, ob es besser wäre, Zeitstempel im TAI-Format zu speichern und sie bei Bedarf in UTC umzuwandeln.
    • Zeitzonen sind ein vom Menschen geschaffenes Konzept und werden im Lauf der Zeit angepasst.
    • Man sollte sich an absoluter Zeit orientieren und sie bei Bedarf in ein lokales Zeitformat umwandeln.
  • Vor etwa zehn Jahren habe ich auf einer Konferenz gehört, dass Google keine Schaltsekunden verwendet, sondern sie auf reguläre Sekunden verteilt.

    • Google modifiziert seine NTP-Server, um die Schaltsekunde zu verteilen.
  • Ich frage mich, ob es eine Zeitmessungsmethode gibt, die synchronisiert ist und monoton ansteigt.