gpt4 book ai didi

c++ - 使 CTime 和 CTimeSpan 忽略夏令时

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:16 25 4
gpt4 key购买 nike

我正在使用 CTime 和 CTimeSpan 并用它做简单的算术运算。在某些时候我正在做类似的事情

...
CTime someTime;
CTimeSpan oneDay(1,0,0,0);
return someTime + oneDay;

现在,如果 someTime 在夏令时期间并且返回值不是(反之亦然),此操作将增加 23 小时(或分别为 25 小时),这是绝对正确的。无论如何,我需要的是完全忽略夏令时。我希望结果与求和运算之前的日期相同。

解决此问题的一种方法是检查这些情况并相应地更正结果。但我想知道是否有办法完全禁用夏令时功能。

最佳答案

我最终使用 CTime::GetLocalTm(...) 自行更正了它。

tm myTm;
original.GetLocalTm(&myTm);
BOOL bWasDST = (myTm.tm_isdst != 0);

result.GetLocalTm(&myTm);
BOOL bIsDST = (myTm.tm_isdst != 0);

if ((bWasDST - bIsDST) != 0)
{
CTimeSpan dstCorrection(0, bWasDST - bIsDST, 0, 0);
result += dstCorrection;
}

关于c++ - 使 CTime 和 CTimeSpan 忽略夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25030709/

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