FILETIME 与 Time_t
Unix 起始时间 1970-01-01 00:00:00 计数单位为 秒
Win32 FileTime 起始时间 1601-01-01 00:00:00 计数单位为 100纳秒
1 s = 1000 ms = 1000000 μs = 1000000000 ns
两者相差毫秒数为:11644473600000L
FILETIME To Time_t
void FileTimeToTime_t( FILETIME ft, time_t *t )
{
ULARGE_INTEGER ui;
ui.LowPart = ft.dwLowDateTime;
ui.HighPart = ft.dwHighDateTime;
*t = ((LONGLONG)(ui.QuadPart - 116444736000000000) / 10000000);
}
Time_t To FILETIME
void Time_tToFileTime(time_t t, LPFILETIME pft)
{
// Note that LONGLONG is a 64-bit value
LONGLONG ll;
ll = Int32x32To64(t, 10000000) + 116444736000000000;
pft->dwLowDateTime = (DWORD)ll;
pft->dwHighDateTime = ll >> 32;
}