如何将 FILETIME 转换为秒?我需要比较两个 FILETIME 对象..
I found this http://www.gamedev.net/topic/565693-converting-filetime-to-time_t-on-windows/,
但似乎并没有起到作用......
ULARGE_INTEGER ull;
ull.LowPart = lastWriteTimeLow1;
ull.HighPart = lastWriteTimeHigh1;
time_t lastModified = ull.QuadPart / 10000000ULL - 11644473600ULL;
ULARGE_INTEGER xxx;
xxx.LowPart = currentTimeLow1;
xxx.HighPart = currentTimeHigh1;
time_t current = xxx.QuadPart / 10000000ULL - 11644473600ULL;
unsigned long SecondsInterval = current - lastModified;
if (SecondsInterval > RequiredSecondsFromNow)
return true;
return false;
我与 2 个 FILETIME 进行了比较,预期差异为 10 秒,它给了我 ~7000...
这是提取秒数的好方法吗?
您给出的代码似乎是正确的,它将 FILETIME 转换为 UNIX 时间戳(显然丢失了精度,因为 FILETIME 的理论分辨率为 100 纳秒)。您确定您比较的 FILETIME 确实只有 10 秒的差异吗?
我实际上在一些软件中使用了非常相似的代码:
double time_d()
{
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
__int64* val = (__int64*) &ft;
return static_cast<double>(*val) / 10000000.0 - 11644473600.0; // epoch is Jan. 1, 1601: 134774 days to Jan. 1, 1970
}
这将返回一个类似 UNIX 的时间戳(自 1970 年以来以秒为单位),具有亚秒级分辨率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)