Поделиться через


Преобразование значения time_t в FILETIME

Функции времени, включенные во время выполнения C, используют тип time_t для представления количества секунд, прошедшего с полуночи, 1 января 1970 года. В следующем примере значение time_t преобразуется в значение 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;
}

Получив значение FILETIME, можно преобразовать значение в системное время с помощью функции FileTimeToSystemTime .

Пример устаревшего кода

Пример кода, приведенный в предыдущем разделе, подходит для любой архитектуры. Но если вы создаете для 32-разрядной архитектуры и определяете _USE_32BIT_TIME_T, то time_t является 32-разрядным значением. В этом случае вы можете использовать следующий пример кода.

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