我在Suse 10中使用mktime(struct tm *)函數。在Linux上混淆mktime的行爲?
現在,我在夏令時啓用時注意到一些奇怪的行爲。假設我已啓用夏令時,從9月15日18:10開始,夏令時爲30分鐘。現在,當我用具有日期爲9月15日18:10且tm_isdst設置爲0的tm結構調用mktime時,則只有在tm_isdst設置爲1的情況下,我才能返回tm結構中的相同值。
但是,如果將日期設置爲9月15日18:10並將tm_isdst設置爲1,那麼我發現時間更改爲17:40。 tm結構中的這種修正在9月15日18:10到9月15日18:40之間的時間內被發現,但是之後沒有發生時間修正並且保持啓用dst標誌。即使我通過9月16日18:10的日期,也不會發生時間更正,只有dst標誌保持啓用狀態。
我完全困惑。這是mktime的正確行爲嗎?
我不知道。也許將時間18:10(dst 0)轉換爲mktime是未定義的,但我認爲在這種情況下返回最有用的東西應該是18:40(dst 1) –