Zeitumstellung

Ah, die Uhr hat sich wieder 3 mal zurückgestellt.

… muss ich zum Glück nicht mehr an Tagen wie heute sagen. Denn die Umstellung von Sommer- auf Winterzeit ist wieder einmal fällig.

Als ich damals vor 15-20 Jahren 3 Windows-Installationen auf einem PC parallel installiert hatte und mit VAMOS hin- und her bootete, stellte jede Windows-Installation die Uhr vor oder zurück. Damit lief die Uhr dann bis zu 2 Stunden falsch. Ein Umstellung erfolgte durch mich selbst manuell unter DOS bzw. Windows 3.x , und dann führten Windows 9x und danach Windows NT das gleiche nochmals automatisch durch.
(Anmerkung: Damals war ich hauptsächlich in DOS unterwegs und nutzte Windows nur für Office Anwendungen)

Und NTP … was ist das?

Inzwischen ist die Zeitumstellung für mich auch “programmatisch” voll und ganz integriert. Orientiert am Ausgabeformat “yyyy-mm-ddThh:mm:ss+hh:mm” nach dem ISO 8601 Standard, programmiere ich immer in globaler Zeit und nur die Anzeige wird lokal aufbereitet.

Linux war schon von Anfang an so vernünftig und stellte die Uhr des PCs auf die UTC Weltzeit und rechnete nur den Offset der eingestellten Zeitzone für den Benutzer dazu.

Windows ist hier auf dem Stand von 1980/1990 geblieben und schreibt die lokale Zeit in die PC-Uhr … weil … DOS machte das ja auch so. Und genau deshalb muss sich Windows je nach Zeitzone zweimal im Jahr selbst daran erinnern, die interne Uhr vor oder zurück zu stellen.

… Tja, und wenn man Windows n-mal installiert hat, hat man am Ende n-Umstellungen.

Heute wird das zum Glück kompensiert, weil nach so einer Umstellung das Internet befragt wird und so wieder alles in Ordnung kommt.

Doch dafür gibt es auch schon seit 15 Jahren eine Lösung: Man erzeugt im Registry-Key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation den DWORD Eintrag RealTimeIsUniversal mit dem Wert 1.

Nach einem Neustart verhält sich Windows ähnlich wie Linux. Es bewertet die interne Uhr als UTC und addiert/subtrahiert den Offset der Zeitzone automatisch … Perfekt!

Doch bis vor ein paar Jahren trat dann ein anderer Bug auf: Windows konnte in diesem Zustand die Uhr des PCs nicht mehr verändern. Wollte man also die Uhr bewusst verstellen (oder mit dem Internet synchronisieren), war das nur temporär (also ein weiterer Offset), der mit dem nächsten Neustart wieder verloren ging.

Dem Himmel sei Dank hat es Microsoft im Jahr 2016 geschafft, seine Betriebssysteme so zu patchen, dass die Uhr im UTC Modus läuft und auch verstellt werden kann.

Fazit: Also Leute… das hättet ihr vor 20 Jahren (Windows 98/NT 4) aber auch schon hinbekommen können.


Nachtrag: Was hab’ ich mich vor 6 - 7 Jahren abgemüht, alle Windows-APIs durchzuprobieren um die Uhr im UTC-Modus zu manipulieren.
Ich dachte damals, dass das nur ein dummer UI Bug sein kann, und probierte von SetSystemTime bis hin zu WMI Win32_OperatingSystem SetDateTime alle erdenklichen Kombinationen von Accounts und Privilegien durch.

… alles ohne Erfolg … denn der Bug saß tief im Windows Kern.

Da frage ich mich dann immer: Ist das außer mir keinem auf der Welt sonst noch aufgefallen? Das hätte doch beim Qualitätstest schon aufschlagen müssen!


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!