Dela via


Konvertera ett time_t-värde till en FILETIME

Tidsfunktionerna som ingår i C-körtiden använder time_t-typen för att representera antalet sekunder som förflutit sedan midnatt den 1 januari 1970. I följande exempel konverteras ett time_t-värde till en FILETIME-.

#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;
}

När du har fått en FILETIME-kan du konvertera värdet till systemtid med hjälp av funktionen FileTimeToSystemTime.

Exempel på äldre kod

Kodexemplet i föregående avsnitt är bra för alla arkitekturer. Men om du skapar för en 32-bitarsarkitektur och definierar _USE_32BIT_TIME_Tär time_t ett 32-bitarsvärde. I så fall kan du använda följande kodexempel i stället.

#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;
}