设置CTime和CTimeSpan忽略夏令时
Make CTime and CTimeSpan ignore daylight saving time
我正在使用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;
}
相关文章:
- 确定夏令时是否适用于特定日期
- 设置可等待计时器和夏令时调整
- boost::p osix_time:使用夏令时检索时间
- Windows UTC时间夏令时是否独立
- 使用DateTime类使用夏令时
- C++ clock_gettime() 和夏令时
- CTimeSpan总是为零
- c++本地时间,不受夏令时使用boost的影响
- 如何在国外找到考虑到夏令时的时间
- 设置CTime和CTimeSpan忽略夏令时
- 夏令时和其他时区相关的问题与boost日期时间库
- 创建不使用夏令时的boost::local_time::custom_time_zone
- 处理夏令时c++
- 考虑夏令时的时差
- 如何确定当前的当地时间是否为夏令时
- 到GMTUTC(夏令时)的历史时间
- 使用WinAPI将夏令时和UTC转换为本地时间
- c++时差函数计算夏令时吗
- 是否有简单的方法在C/ c++中获得Linux下的夏令时转换时间?
- CTimeSpan.GetDays()和夏令时