夏令時對tm結構的影響

來源:互聯網
上載者:User

夏令時不好玩,我覺的這東西完全是一個忽悠人的東西。美其名曰,節省能源。即使調了時間,難道就會提早睡了?我看未必,攝心術發生的作用罷了。

閑話少說,正傳請看

夏令時百科:http://baike.baidu.com/view/100246.htm

在此不多說,只說對編程人員的影響

我的程式裡,用到了日期轉換,自己弄的轉換函式,用意是把自己定義的結構體和tm、time_t之間進行轉換,當然函數不止一個,而是一族函數,總共有好幾個,用於之間的互相轉換,方便程式的日期、時間操作。

這程式是用來播放錄影檔案的,程式完成,在我的電腦上可以正常播放,結果放到額度電腦上無法播放,同一個檔案,同一個程式,這奇怪了。查看路徑什麼的也都正常。後來就在程式裡添加列印資訊,往下追了9層,終於發現了問題。夏令時在玩我。

另外一個資訊,這日期、時間的操作函數是原來同事寫好的,我只是在上面添加了一些新的介面而已,所以所有的邏輯都是按照之前寫好的代碼弄的。

其中有這麼一個邏輯存在:先把自訂日期時間轉換成time_t,然後加上指定秒數後再轉換回來成一個新的日期時間。經過跟蹤發現,這個轉換出來的時間竟然提前了一個小時,而這一個小時,是給夏令時搞過去的。再看其它的函數,發現有的函數裡沒有對夏令時處理,而這個函數中卻進行了處理。猜測應該就是這個不對稱引起了問題。於是把所有夏令時的處理全部屏蔽掉,結果一試,可以播放了。

 

具體程式相關的

time_t ttCur = time(NULL);

tm *pt = localtime(&ttCur);

如果沒有設定夏令時,則pt->tm_isdst為0,否則就為1.這個1是固定的,不會隨時區的變化而變化。

有的時區有夏令時,而有的時區沒有。中國沒有,而其它的很多國家都有,比如山地時間(美國/加拿大時區)等等.

 

有夏令時的地區,一年的白天長的那段時間(一般可能是夏季和秋季)會被設定成夏令時時間,這個看上去無關痛癢的東西,卻給編程帶來了一些小麻煩,而且還會有時間重疊的現象發現,這就更麻煩了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.