Udostępnij przez


Konwertowanie wartości time_t na FILETIME

Funkcje czasu zawarte w czasie wykonywania języka C używają typu time_t do reprezentowania liczby sekund, które upłynęły od północy, 1 stycznia 1970 r. Poniższy przykład konwertuje wartość time_t na 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;
}

Po uzyskaniu filetimemożna przekonwertować wartość na czas systemowy przy użyciu funkcji FileTimeToSystemTime.

Przykład starszego kodu

Przykład kodu w poprzedniej sekcji jest dobry dla każdej architektury. Jeśli jednak utworzysz architekturę 32-bitową i zdefiniujesz _USE_32BIT_TIME_T, time_t jest wartością 32-bitową. W takim przypadku możesz użyć następującego przykładu kodu.

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