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