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;
}
本文详细解析了Unix时间戳与Windows FILETIME两种时间表示方式的差异,包括它们的起始时间和计数单位,并提供了两种类型相互转换的具体算法实现。
1995

被折叠的 条评论
为什么被折叠?



