Dateizeiten

Eine Dateizeit ist ein 64-Bit-Wert, der die Anzahl von 100-Nanosekunden-Intervallen darstellt, die seit 12:00 Uhr verstrichen sind. 1. Januar 1601 koordinierte Weltzeit (UTC). Das System zeichnet Dateizeiten auf, zu denen Anwendungen Dateien erstellen, darauf zugreifen und in diese schreiben.

Das NTFS-Dateisystem speichert Zeitwerte im UTC-Format, sodass sie nicht von Änderungen in der Zeitzone oder der Sommerzeit betroffen sind. Das FAT-Dateisystem speichert Zeitwerte basierend auf der lokalen Zeit des Computers. Beispielsweise wird eine Datei, die um 15:00 Uhr PST in Washington gespeichert wird, als 18:00 Uhr EST in New York auf einem NTFS-Volume angesehen, aber sie wird als EST um 15:00 Uhr in New York auf einem FAT-Volume angesehen.

Zeitstempel werden zu verschiedenen Zeiten und aus verschiedenen Gründen aktualisiert. Die einzige Garantie für einen Dateizeitstempel ist, dass die Dateizeit korrekt wiedergegeben wird, wenn das Handle, das die Änderung vornimmt, geschlossen wird.

Nicht alle Dateisysteme können erstellungs- und letzte Zugriffszeiten aufzeichnen, und nicht alle Dateisysteme zeichnen sie auf die gleiche Weise auf. Beispielsweise beträgt die Auflösung der Erstellungszeit für FAT 10 Millisekunden, während die Schreibzeit eine Auflösung von 2 Sekunden und die Zugriffszeit eine Auflösung von 1 Tag aufwies, sodass es sich tatsächlich um das Zugriffsdatum handelt. Das NTFS-Dateisystem verzögert Aktualisierungen der letzten Zugriffszeit für eine Datei um bis zu 1 Stunde nach dem letzten Zugriff.

Verwenden Sie die GetFileTime-Funktion, um die Dateizeiten für eine angegebene Datei abzurufen. GetFileTime kopiert die Erstellung, den letzten Zugriff und die letzten Schreibzeiten in einzelne FILETIME-Strukturen. Sie können Dateizeiten auch mithilfe der Funktionen FindFirstFile und FindNextFile abrufen. Diese Funktionen kopieren die Dateizeiten in FILETIME-Strukturen in einer WIN32 _ FIND _ DATA-Struktur. Beim Schreiben in eine Datei wird die letzte Schreibzeit erst vollständig aktualisiert, wenn alle Handles, die zum Schreiben verwendet werden, geschlossen sind.

Verwenden Sie die SetFileTime-Funktion, um die Dateizeiten für eine Datei festzulegen. Mit dieser Funktion können Sie die Erstellung, den letzten Zugriff und die letzten Schreibzeiten ändern, ohne den Inhalt der Datei zu ändern. Sie können die Zeiten verschiedener Dateien mithilfe der CompareFileTime-Funktion vergleichen. Die Funktion vergleicht zwei Dateizeiten und gibt einen Wert zurück, der angibt, welche Zeit später liegt, oder gibt 0 (null) zurück, wenn die Zeiten gleich sind.

Wenn Sie die Dateizeiten für angegebene Dateien ändern möchten, können Sie ein Datum und eine Uhrzeit mithilfe der SystemTimeToFileTime-Funktion in eine Dateizeit konvertieren. Sie können die Systemzeit auch in einer FILETIME-Struktur abrufen, indem Sie die GetSystemTimeAsFileTime-Funktion aufrufen.

Verwenden Sie die FileTimeToSystemTime-Funktion, um einem Benutzer die Anzeige einer Dateizeit zu erleichtern. FileTimeToSystemTime konvertiert die Dateizeit und kopiert Monat, Tag, Jahr und Tageszeit aus der Dateizeit in eine SYSTEMTIME-Struktur.

Dateizeiten und Sommerzeit

Sie müssen bei der Verwendung von Dateizeiten vorsichtig sein, wenn der Benutzer das System so festgelegt hat, dass es automatisch an die Sommerzeit angepasst wird.

Verwenden Sie die FileTimeToLocalFileTime-Funktion, um eine Dateizeit in die lokale Zeit zu konvertieren. FileTimeToLocalFileTime verwendet jedoch die aktuellen Einstellungen für die Zeitzone und die Sommerzeit. Wenn es sich also um Sommerzeit handelt, wird die Sommerzeit berücksichtigt, auch wenn die Dateizeit, die Sie konvertieren, in der Standardzeit liegt.

Das FAT-Dateisystem zeichnet Zeiten auf dem Datenträger in ortslokaler Zeit auf. GetFileTime ruft zwischengespeicherte UTC-Zeiten aus dem FAT-Dateisystem ab. Wenn es zur Sommerzeit wird, wird die von GetFileTime abgerufene Zeit um eine Stunde deaktiviert, da der Cache nicht aktualisiert wird. Wenn Sie den Computer neu starten, ist die zwischengespeicherte Zeit, die GetFileTime abruft, richtig. FindFirstFile ruft die lokale Zeit aus dem FAT-Dateisystem ab und konvertiert sie mithilfe der aktuellen Einstellungen für die Zeitzone und die Sommerzeit in UTC. Wenn es sich also um Sommerzeit handelt, berücksichtigt FindFirstFile die Sommerzeit, auch wenn die Dateizeit, die Sie konvertieren, in der Standardzeit liegt.

Das NTFS-Dateisystem zeichnet Zeiten auf dem Datenträger in UTC auf. Um die Sommerzeit beim Konvertieren einer Dateizeit in eine ortslokale Zeit zu berücksichtigen, verwenden Sie die folgende Funktionssequenz anstelle von FileTimeToLocalFileTime:

Dateizeiten und CDFS

Die Datums- und Zeitstempel von Dateien, die sich auf einem Medium befinden oder von diesen stammen, werden mithilfe von CDFS (Compact Disc File System) an die lokale Zeitzone angepasst. ISO 9660 besagt, dass CDFS die Datumsinformationen für die lokale Zeitzone korrekt anzeigen soll. Dies erfolgt, sodass Datumsangaben für Dateien in CDFS mit denen im UDF-Format (Universal Disk Format) übereinstimmen. UDF ist der neuere Standard für Verteilungsmedien. Wenn Ihr Code von den unveränderten Datumsinformationen für eine Datei abhängt, die sich auf einem Medium mit CDFS befindet oder von diesem stammt, funktioniert er möglicherweise nicht ordnungsgemäß.