Windows-Datumsrepräsentation

993
Erick

Ich debattierte über den 2038-Fehler unter Unix mit einem Freund (der 32-Bit-Zeitstempel-Fehler ).

Wir haben uns tatsächlich gefragt, wie Windows die Daten selbst speichert. Ich dachte, es wäre eine einfache DateTime, aber wie könnte das System dann das Delta zwischen zwei Datumsangaben berechnen?

Ist es möglich, dass Windows Datumsangaben (intern) in einem Zeitstempel speichert und diese dann in einer Datumszeit konvertiert?

0

1 Antwort auf die Frage

4
geoffc

Es gibt FILETIME, ein 64-Bit-Integer mit Vorzeichen, das seit dem 1. Januar 1601 Intervalle von 100 Nanosekunden darstellt. Dies dauert eine lächerlich lange Zeit, da 64 Bit eine riesige Zahl sind.

Während CTIME (Unixtime) ein vorzeichenbehaftetes 32-Bit-Int ist, das Sekunden seit dem 1. Januar 1970 darstellt.

Die bessere Frage ist: "WO" verwendet Windows jedes Format? Jede einzelne Sache, die Zeit speichert, kann möglicherweise jede Zeitdarstellung verwenden, die sie auch möchten.

Verwendet AD dasselbe wie das System, das Dateisystem usw.? Interessiere dich für die Antwort auf diese Frage!

Soweit ich weiß, greift zumindest das .NET-Framework die Zeit von filetime auf. Fredrik Mörk vor 14 Jahren 0
Also wird es auch als 1234567890 gespeichert, wenn ich es richtig verstehe? Erick vor 14 Jahren 0
@Erick: das sieht aus wie CTIME, nicht FILETIME. FILETIME ist in verrückte Zahlen. Jetzt ist: 1247703464 in CTIME und FILETIME für jetzt: 1289217709140600000 geoffc vor 14 Jahren 0
Windows hat mindestens zwei oder drei verschiedene Arten, eine Zeit zu speichern. FILETIME wird von den NTFS-Leuten verwendet, dann gibt es OLEDateTime, ein "double", bei dem integraler Teil der Tag und der gebrochene Teil die Tageszeit und an anderer Stelle (ich erinnere mich nicht an den Namen) an einen Menschen -lesbare Zeichenfolge, die Datum, Uhrzeit und Zeitzone speichert. Joey vor 14 Jahren 0