我正在使用 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/