Windows Confidential

Entwicklung des Zeitstempels bei den Dateieigenschaften

Raymond Chen

In Windows 95 bestanden die Zeitstempelinformationen auf dem Dateieigenschaftenblatt aus den verschiedenen Zeitstempeln in der lokalen Zeitzone, selbst wenn die Zeitzone zu dem gegebenen Zeitpunkt nicht die aktive Zeitzone war. Da wir beispielsweise in Redmond die Pacific Normalzeit haben, müsste Windows 95 alle Zeitstempel in Bezug auf die Pacific Normalzeit anzeigen. Folglich müsste der Zeitstempel einer Datei, die am 4. Juli um 12 Uhr erstellt worden ist, 11 Uhr anzeigen, wenn Sie sich ihn im Winter ansehen, da 12 Uhr Pacific Sommerzeit sich auf den gleichen Moment bezieht, der im Winter als 11 Uhr angegeben wird. Pacific Normalzeit. Auch wenn Redmond am 4. Juli nicht die Pacific Normalzeit verwendete, ist die Information technisch gesehen korrekt (wenn auch intuitiv falsch).

Diese Behandlung von Uhrzeiten, die zur „anderen Seite“ der Sommerzeit gehören, stellt eine bemerkenswerte Abweichung zwischen verwaltetem und nicht verwaltetem Code dar. Nicht verwalteter Code führte historisch gesehen die Konvertierung zwischen der Coordinated Universal Time (UTC) und der lokalen Zeit basierend auf der lokalen Zeitzone zum Zeitpunkt der Konvertierung und nicht auf Grundlage der gültigen Zeitzone für die konvertierte Zeit durch. Ein Grund hierfür ist, dass es zur Zweideutigkeit von Zeiten oder gar zu nicht konvertierbaren Zeiten kommen kann, wenn die Zeitzone auf der zu konvertierenden Zeit basiert. Beispielsweise werden die Uhren bei Umstellung von Standardzeit auf Sommerzeit von 2 Uhr auf 3 Uhr morgens vorgestellt. Eine aufgezeichnete lokale Zeit von 2:30 morgens hätte keine entsprechende UTC-Zeit, da es lokal gesehen 2:30 morgens nicht gegeben hat. Andererseits wäre ein Zeitpunkt, der beim Übergang von der Sommerzeit auf die Standardzeit mit 2:30 morgens aufgezeichnet wird, doppeldeutig, da die Uhr um eine Stunde zurückgestellt wird und 2:30 zweimal vorkommt.

Ein weiterer Grund dafür, nicht die konvertierte Zeit zu verwenden, liegt in der Tatsache, dass das Betriebssystem möglicherweise nicht die notwendigen Informationen besitzt, um festzustellen, welche Zeitzone zu einem bestimmten Zeitpunkt in der Vergangenheit aktiv gewesen ist. Die Regeln für den Wechsel von Standardzeit auf Sommerzeit können von den jeweiligen Regierungen geändert werden. Darüber hinaus gibt es Länder (wie z. B. Israel und Brasilien), die bis vor kurzem keinem vorhersehbaren Muster gefolgt sind und stattdessen das Umstellungsdatum von Fall zu Fall festgelegt haben. Bei einem gegebenen Zeitpunkt in der Vergangenheit oder der Zukunft ist es schwierig (oder im Fall der Zukunft unmöglich) mit Sicherheit festzustellen, welche Zeitzone zu dem Zeitpunkt aktiv gewesen ist. (Und viel Glück bei der Betrachtung von Zeitpunkten, die vor der Zeitstandardisierung liegen!)

Andererseits handelt es sich bei der System.DateTime-Klasse um verwalteten Code, der dabei behilflich ist, die Zeitzone einer bestimmten zu konvertierenden Uhrzeit festzustellen und ein mehr intuitiv richtiges Ergebnis anzubieten. Es ist jedoch auch hier möglich, dass ungewöhnliche Fälle dem nicht verwalteten Code Angstzustände verursachen.

Zurück zur Entwicklung. In Windows 2000 wurde die Formatierung des Zeitstempels leicht geändert und von da an bei Daten, die innerhalb eines Tages vom derzeitigen Datum liegen, mit Gestern, Heute oder Morgen bezeichnet. Beispielsweise anstelle von Erstellt: Sonntag, 14. Februar 2009, 7:00:00 morgens, würde das Eigenschaftenblatt Folgendes anzeigen: Erstellt: Heute, 14. Februar 2009, 7:00:00 morgens, wenn diese Information am 14. Februar eingesehen werden würde. Im Grunde genommen hat sich nichts geändert. Es handelt sich lediglich um einen visuellen Kniff, um die Dinge anspruchsvoller zu gestalten.

In Windows Vista wurde der Uhrzeitteil des Zeitstempels ein wenig benutzerfreundlicher gestaltet: Beziehen sich die Uhrzeit und das Datum auf den aktuellen Tag, wird der Uhrzeitteil des Zeitstempels in relativer Notation ausgedrückt: Erstellt: Heute, 14. Februar 2009, vor 15 Minuten

In Windows 7 zeigt die Seite „Allgemein“ des Dateieigenschaftenblatts Zeitstempel auf Basis der Zeitzone an, die an Ihrem derzeitigen Standort bei der Erstellung der Datei gültig war, und nicht auf Basis der aktuellen Zeit. Das Eigenschaftenblatt stimmt somit mehr mit den vom verwalteten Code dargestellten Zeitstempeln überein. Bei der Datei, die Sie am 4. Juli um 12 Uhr erstellt haben, wird selbst in den Wintermonaten angezeigt, dass sie um 12 Uhr erstellt worden ist. Diese Änderung macht sich die neue sogenannte dynamische Zeitzone zunutze, aufgrund derer die Sommerzeitregeln für eine Zeitzone von Jahr zu Jahr variieren können. Windows weiß somit also, dass eine am 30. Oktober 2006 in Redmond erstellte Datei während der Pacific Normalzeit erstellt worden ist, wohingegen eine am 30. Oktober 2007 erstellte Datei während der Pacific Sommerzeit erstellt worden ist. Dies liegt daran, dass die Sommerzeitregeln in den USA im Jahr 2007 geändert worden sind.

Bedenken Sie jedoch, dass die historischen Informationen, die mit Windows kommen, nicht weiter als 1987 zurückgehen. Da die Regeln zu der Zeit anders waren, können Zeitstempel aus der Zeit immer noch falsch konvertiert werden.

Die Folge dieser Änderungen bei der Interpretierung von Zeitstempeln ist, dass die gleiche Datei unter verschiedenen Windows-Versionen Werte anzeigen kann, die um eine Stunde voneinander abweichen. Der Zeitstempel selbst hat sich nicht geändert, lediglich die Art und Weise, wie er in Windows interpretiert wird, ist unterschiedlich.

Raymond Chen befasst sich auf seiner Webseite The Old New Thing und in seinem gleichnamigen Buch (Addison-Wesley, 2007) mit der Geschichte von Windows, der Win32-Programmierung und dem Umzug in ein neues Büro.

Verwandter Inhalt