Schau mal hier:
Eine Datei Zeit ist ein 64-Bit-Wert, der die Anzahl von 100-Nanosekunden-Intervallen darstellt, die seit 00.00 vergangen sind 1. Januar 1601 Koordinierte Weltzeit (UTC).
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724290.aspx
Um die Struktur in einen 64-Bit-Wert zu konvertieren, einfach beiden Teile zu einem __int64 kombinieren und integer divide dann von 10.000.000 (1 Sekunde hat 1 Milliarde Nanosekunden, oder 1E9, daher 100 -ns-Auflösung ist 1/100 davon oder 1E7).
FILETIME timeFile;
__int64 Time = (__int64) timeFile.dwHighDateTime << 32 | timeFile.dwLowDateTime;
int TimeSec = Time/10000000;
Sie können ULARGE_INTEGER verwenden und Zugriff auf ihn über .QuadPart dieser Union aber Microsoft schlägt auch __int64 oder ULONGLONG zu verwenden. 64-Bit-Nummern sind ein bisschen chaotisch.
Wenn Sie den Wert von Sekunden als Fraktion in Bezug auf Minute benötigen, verwenden Modulo 60. Gleiche zu Minute und Stunde gilt, aber Vorsicht, dass FILTETIME ist UTC nicht Ortszeit. Um das Datum, den Monat und das Jahr zu extrahieren, wird es ein bisschen schwierig, nicht das klingt nicht danach.
Anzahl der Sekunden von welcher Epoche? Versuchen Sie beispielsweise, einen Unix-Zeitstempel zu erhalten? – user4581301
Ich versuche die Anzahl der Sekunden zu erhalten, die der Dateierstellungszeit entsprechen - die FILETIME-Struktur enthält diese Datei Erstellungszeit – Shuzheng
Das Problem ist die Anzahl der Sekunden von wann? FILETIME erfasst die Zeit beginnend am 1. Januar 1601 in Schritten von 100 Nanosekunden. Auf Unix-basierten Systemen hingegen wird die Zeit in Sekunden seit dem 1. Januar 1970 aufgezeichnet. Excel und Tabellen verwenden eine andere Startzeit. NTP verwendet eine andere Startzeit. Jeder benutzt andere Startzeiten, weil niemand in der Lage ist, sich auf die beste Startzeit zu einigen. – user4581301