gpt4 book ai didi

c++\将 FILETIME 转换为秒

转载 作者:可可西里 更新时间:2023-11-01 09:20:35 28 4
gpt4 key购买 nike

如何将 FILETIME 转换为秒数?我需要比较两个 FILETIME 对象..

我找到了 this ,但似乎并不能解决问题...

 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 年以来的秒数),分辨率为亚秒级。

关于c++\将 FILETIME 转换为秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709580/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com