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