我发现一个旧的C++ MFC程序中的一个错误,我们计算了一个固定基准日期的给定日期的偏移量(以天为单位)。我们看到由于某种原因而被关闭的结果,并将其追踪到原程序员使用CTimeSpan.GetDays()方法的地方。根据documentation:CTimeSpan.GetDays()和夏令时
请注意,夏令时可能导致GetDays返回一个潜在令人惊讶的结果。例如,当DST生效时,GetDays将4月1日至5月1日之间的天数报告为29日而非30日,因为4月份的某一天缩短了一个小时,因此不会算作一整天。
我建议的修复方法是用(obj.GetTotalHours()+1)/24
代替。我认为这将涵盖所有问题,因为这是一项大约每天在同一时间运行的批处理作业,但我认为如果可能有更好的方法,我会在实施之前向这些聪明的人询问。
这只是一个侧面问题,但我也很好奇,如果程序可以在任何时候运行,这将如何处理。
这是有道理的:0时间部分,然后整数除法将处理额外的小时,当夏时制改变 – 2008-10-28 19:36:10