Konvertieren eines time_t-Werts in eine FILETIME

Die in der C-Laufzeit enthaltenen Zeitfunktionen verwenden den time_t-Typ , um die Anzahl von Sekunden darzustellen, die seit Mitternacht, dem 1. Januar 1970 verstrichen sind. Im folgenden Beispiel wird ein time_t Wert in einen FILETIME-Wert konvertiert.

#include <windows.h>
#include <time.h>

void TimetToFileTime(time_t t, LPFILETIME pft)
{
    ULARGE_INTEGER time_value;
    time_value.QuadPart = (t * 10000000LL) + 116444736000000000LL;
    pft->dwLowDateTime = time_value.LowPart;
    pft->dwHighDateTime = time_value.HighPart;
}

Nachdem Sie eine FILETIME abgerufen haben, können Sie den Wert mithilfe der FileTimeToSystemTime-Funktion in die Systemzeit konvertieren.

Legacycodebeispiel

Das Codebeispiel im vorherigen Abschnitt eignet sich für jede Architektur. Wenn Sie jedoch für eine 32-Bit-Architektur erstellen und _USE_32BIT_TIME_T definieren, ist time_t ein 32-Bit-Wert. In diesem Fall haben Sie die Möglichkeit, stattdessen das folgende Codebeispiel zu verwenden.

#include <windows.h>
#include <time.h>

void TimetToFileTime(time_t t, LPFILETIME pft)
{
    LONGLONG time_value = Int32x32To64(t, 10000000) + 116444736000000000;
    pft->dwLowDateTime = (DWORD) time_value;
    pft->dwHighDateTime = time_value >> 32;
}