C++ 使CTime和CTimeSpan忽略夏令时
我在用CTime和CTimeSpan做简单的算术。在某个时刻,我在做一些类似的事情C++ 使CTime和CTimeSpan忽略夏令时,c++,mfc,dst,ctime,C++,Mfc,Dst,Ctime,我在用CTime和CTimeSpan做简单的算术。在某个时刻,我在做一些类似的事情 ... CTime someTime; CTimeSpan oneDay(1,0,0,0); return someTime + oneDay; 现在,如果某个时间在夏令时,而返回值不是(反之亦然),则此操作将增加23小时(或分别为25小时),这是绝对正确的。无论如何,我需要的是完全忽略夏令时。我希望结果与求和操作之前的日期是同一天的同一时间 解决这个问题的一种方法是检查这些情况并相应地纠正结果。但是我想知道是
...
CTime someTime;
CTimeSpan oneDay(1,0,0,0);
return someTime + oneDay;
现在,如果某个时间
在夏令时,而返回值不是(反之亦然),则此操作将增加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;
}