Datenqualität

Halbstunden- und 45-Minuten-Zeitzonen erklärt

Die meisten Entwickler schreiben ihren ersten Code für Zeitzonen unter der Annahme, dass jeder Offset eine ganze Zahl von Stunden zu UTC beträgt. Diese Annahme gilt für die Mehrheit der Zonen und bricht dann zusammen, sobald zum ersten Mal eine Anfrage von einem Ort kommt, der ihr nicht folgt. Mehrere Teile der Welt verwenden Offsets zur halben Stunde, und mindestens eine Region verwendet einen Offset von 45 Minuten. Keiner davon ist ein Sonderfall im Sinne von selten oder ungültig. Es ist schlicht die Art, wie diese Orte ihre Uhren im Verhältnis zur Sonne und zu ihren Nachbarn eingestellt haben.

Ein Offset zur halben Stunde spiegelt meist wider, dass der Längengrad eines Landes zwischen zwei Standardzonen im Stundenraster liegt und man sich entschieden hat, die Mitte zu wählen, statt zu einer Seite zu runden. Ein Offset von 45 Minuten ist noch seltener und spiegelt in der Regel eine ähnliche Zwischenlage wider, kombiniert mit der bewussten Entscheidung, sich von einem benachbarten Standard-Offset abzugrenzen. Keines von beiden ist ein Fehler in den Daten. Beide sind legitime gesetzliche Zeitzonen, die in der IANA-Datenbank genauso geführt werden wie jede Zone im Stundenraster.

Wo Software daran tatsächlich scheitert, ist Datums- und Zeitberechnung mit fest einprogrammierten Annahmen. Code, der Offsets auf die nächste Stunde rundet, einen Offset als ganze Zahl von Stunden speichert oder eine Dropdown-Liste von Zeitzonen nur in ganzen und halben Stundenschritten aufbaut, wird diese Zonen unbemerkt falsch behandeln. Auch der Fehler ist meist leise. Zeiten liegen um fünfzehn oder dreißig Minuten daneben, statt einen offensichtlichen Fehler auszulösen. Dadurch wird der Bug beim Testen leicht übersehen und fällt erst auf, wenn ein echter Nutzer in der betroffenen Region meldet, dass etwas nicht stimmt.

Die Lösung ist einfach, wenn Sie von Anfang an dafür bauen: Arbeiten Sie immer mit dem tatsächlichen UTC-Offset, der für eine Zone zurückgegeben wird, minutengenau angegeben, statt Stunden anzunehmen oder auf Stunden zu runden. Speichern und vergleichen Sie wo möglich Zonennamen statt Offsets, da der Name den genauen aktuellen und historischen Offset mitbringt, ohne dass Sie etwas fest einprogrammieren müssen.

Eine Zeitzonen-Abfrage, die den genauen Offset zusammen mit dem IANA-Zonennamen zurückgibt, beseitigt hier das Rätselraten. Fragen Sie die Koordinaten oder die Zone direkt ab, statt den Offset eines Ortes allein aus seinem Land oder seiner Region abzuleiten, denn Offsets können innerhalb eines einzigen Landes variieren und sind selten überall sauber auf die volle Stunde ausgerichtet.