我發現一箇舊的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