Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使CTime和CTimeSpan忽略夏令时_C++_Mfc_Dst_Ctime - Fatal编程技术网

C++ 使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和CTimeSpan做简单的算术。在某个时刻,我在做一些类似的事情

...
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;
}