Dateizeiten
Eine Dateizeit ist ein 64-Bit-Wert, der die Anzahl der Intervalle von 100-Nanosekunden darstellt, die seit dem 12.00. Januar 1. Januar 1601 Koordinierte Weltzeit (UTC) verstrichen sind. Das System zeichnet die Dateizeiten auf, wenn Anwendungen Dateien erstellen, darauf zugreifen und in Dateien schreiben.
Das NTFS-Dateisystem speichert Zeitwerte im UTC-Format, sodass sie nicht von Änderungen in der Zeitzone oder Sommerzeit betroffen sind. Das FAT-Dateisystem speichert Zeitwerte basierend auf der lokalen Zeit des Computers. Beispielsweise wird eine Datei, die um 13:00 Uhr PST in Washington gespeichert wird, als 6:00 Uhr EST in New York auf einem NTFS-Volume gesehen, aber es wird als 3:00 Uhr EST in New York auf einem FAT-Volume gesehen.
Zeitstempel werden zu verschiedenen Zeiten und aus verschiedenen Gründen aktualisiert. Die einzige Garantie für einen Dateizeitstempel besteht darin, dass die Dateizeit korrekt widergespiegelt wird, wenn das Handle, das die Änderung vorgibt, 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 auf FAT 10 Millisekunden, während die Schreibzeit eine Auflösung von 2 Sekunden hat und die Zugriffszeit eine Auflösung von 1 Tag hat, sodass es wirklich das Zugriffsdatum ist. Das NTFS-Dateisystem verzögert Aktualisierungen der letzten Zugriffszeit für eine Datei um bis zu 1 Stunde nach dem letzten Zugriff.
Um die Dateizeiten für eine angegebene Datei abzurufen, verwenden Sie die GetFileTime--Funktion. GetFileTime kopiert die Erstellung, den letzten Zugriff und die letzten Schreibzeiten in einzelne FILETIME- Strukturen. Sie können auch Dateizeiten 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 werden.
Um die Dateizeiten für eine Datei festzulegen, verwenden Sie die SetFileTime--Funktion. 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 Uhrzeiten gleich sind.
Wenn Sie die Dateizeiten für angegebene Dateien ändern möchten, können Sie ein Datum und eine Tageszeit 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 eine Dateizeit für einen Benutzer einfach anzuzeigen. FileTimeToSystemTime- konvertiert die Dateizeit und kopiert den Monat, Tag, Jahr und Tag von der Dateizeit in eine SYSTEMTIME- Struktur.
Dateizeiten und Sommerzeit
Sie müssen bei der Verwendung von Dateizeiten achten, wenn der Benutzer das System so eingestellt hat, dass die Sommerzeit automatisch angepasst wird.You must take care when using file times if the user has set the system to automatically adjust for daylight saving time.
Verwenden Sie die FileTimeToLocalFileTime--Funktion, um eine Dateizeit in die Ortszeit zu konvertieren. FileTimeToLocalFileTime verwendet jedoch die aktuellen Einstellungen für die Zeitzone und Sommerzeit. Wenn es also sommerzeitlich ist, wird Sommerzeit berücksichtigt, auch wenn die zu konvertierende Dateizeit in der Standardzeit liegt.
Das FAT-Dateisystem zeichnet Zeiten auf dem Datenträger in der lokalen Zeit auf. GetFileTime zwischengespeicherte UTC-Zeiten aus dem FAT-Dateisystem abruft. Wenn es sommerzeitlich wird, ist die von GetFileTime abgerufene Zeit eine Stunde deaktiviert, da der Cache nicht aktualisiert wird. Wenn Sie den Computer neu starten, ist die zwischengespeicherte Zeit, die Abrufen von GetFileTime korrekt ist. FindFirstFile- ruft die lokale Zeit aus dem FAT-Dateisystem ab und konvertiert sie mithilfe der aktuellen Einstellungen für die Zeitzone und Sommerzeit in UTC. Wenn es also Sommerzeit ist, FindFirstFile Sommerzeit berücksichtigt, auch wenn die zu konvertierende Dateizeit in der Standardzeit liegt.
Das NTFS-Dateisystem zeichnet zeiten auf dem Datenträger in UTC auf. Verwenden Sie zum Berücksichtigen der Sommerzeit beim Konvertieren einer Dateizeit in eine Ortszeit die folgende Sequenz von Funktionen, anstatt FileTimeToLocalFileTime-zu verwenden:
Dateizeiten und CDFS
Die Datums- und Uhrzeitstempel von Dateien, die sich auf oder von Medien mit Compact Disc File System (CDFS) befinden, werden für die lokale Zeitzone angepasst. ISO 9660 gibt an, dass CDFS die Datumsinformationen für die lokale Zeitzone korrekt anzeigt. Dies geschieht, sodass Datumsangaben für Dateien auf CDFS mit denen im Universal Disk Format (UDF) angezeigt werden. 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 Medien mit CDFS befindet oder stammt, funktioniert sie möglicherweise nicht ordnungsgemäß.