다음을 통해 공유


time_t 값을 FILETIME으로 변환

C 런타임에 포함된 시간 함수는 time_t 형식을 사용하여 1970년 1월 1일 자정 이후 경과된 시간(초)을 나타냅니다. 다음 예제에서는 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;
}