共用方式為


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