Blatt · Zeit
Zeitsprung — wo die Uhr springt, fehlt und sich wiederholt
Zweimal im Jahr hat ein Tag 23 oder 25 Stunden, eine Uhrzeit existiert nicht und eine andere zweimal. Hier ist das nicht nachgeschlagen, sondern gemessen: die Umstellungen werden sekundengenau gesucht — mit dem, was jeder Browser ohnehin an Zeitzonenwissen mitbringt. Keine Datenbank, keine Bibliothek.
| Umstellung (UTC) | Ortszeit davor | Ortszeit danach | Versatz | Folge |
|---|
Eine Ortszeit ist keine eindeutige Angabe: in der Lücke gibt es sie nicht, in der doppelten Stunde zweimal. Genau daran scheitern Termine, Zeiterfassung und Logauswertung.
Gesucht wird per Binärsuche — das Ergebnis ist nur dann eine Umstellung, wenn eine Sekunde davor noch der alte und in derselben Sekunde bereits der neue Versatz gilt. Genau das wird für jeden Fund geprüft, dazu die Jahreslänge gegen die Summe aller Tage und die gefundenen Lücken gegen den Rückweg der Ortszeit.
noch nicht geprüft
Woher das Wissen kommt
Aus dem Browser selbst: Intl.DateTimeFormat kennt die Zeitzonendatenbank.
Fragt man dieselbe Zeitmarke einmal in UTC und einmal in der Zone ab, ergibt die Differenz
den Versatz. Wo er sich ändert, liegt eine Umstellung — und die lässt sich einschachteln.
Warum halbe Stunden
Versätze sind nicht immer volle Stunden: Indien liegt bei +5:30, Nepal bei +5:45, die Chathaminseln bei +12:45. Und auf Lord Howe beträgt die Sommerzeit-Umstellung nur 30 Minuten statt einer Stunde. Jede Annahme über runde Stunden ist ein Fehler.
Was daran gefährlich ist
Eine Ortszeit ohne Zone ist keine Zeitangabe. Zweimal im Jahr gibt es eine Stunde nicht und eine andere doppelt — Termine verschieben sich, Arbeitszeiten werden doppelt gezählt, Logzeilen erscheinen in falscher Reihenfolge. Wer in UTC speichert, hat das Problem nicht.
Eine einzelne HTML-Datei. Kein Build, keine Bibliothek, nichts verlässt den Browser. Alle Blätter: ssims437.github.io