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