gpt4 book ai didi

c++ - SYSTEMTIME 上的 30 天差异

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:47 28 4
gpt4 key购买 nike

我想问一下是否有人有一些好的算法(或方法)来检查两个 SYSTEMTIME 变量是否有 30 天或更长时间的差异?

谢谢

最佳答案

作为MSDN pageSYSTEMTIME 上说,

It is not recommended that you add and subtract values from the SYSTEMTIME structure to obtain relative times. Instead, you should

  • Convert the SYSTEMTIME structure to a FILETIME structure.
  • Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
  • Use normal 64-bit arithmetic on the ULARGE_INTEGER value.
SYSTEMTIME st1, st2;
/* ... */
FILETIME ft1, ft2;
ULARGE_INTEGER t1, t2;
ULONGLONG diff;
SystemTimeToFileTime(&st1, &ft1);
SystemTimeToFileTime(&st2, &ft2);
memcpy(&t1, &ft1, sizeof(t1));
memcpy(&t2, &ft2, sizeof(t1));
diff = (t1.QuadPart<t2.QuadPart)?(t2.QuadPart-t1.QuadPart):(t1.QuadPart-t2.QuadPart);
if(diff > (30*24*60*60)*(ULONGLONG)10000000)
{
...
}

(为简洁起见省略了对调用 SystemTimeToFileTime 的错误处理)

关于(30*24*60*60)*(ULONGLONG)10000000:30*24*60*60是30天的秒数; 10000000FILETIME 的个数一秒钟“滴答”(每个 FILETIME 滴答是 100 ns=10^2*10^-9 s=10^-7 s)。转换为乘法中的操作数之一是为了避免溢出常规 int(在适合 int 范围的整数文字之间执行运算时的默认设置)。

关于c++ - SYSTEMTIME 上的 30 天差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042878/

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