2013-03-26 31 views
0

我正在使用Ruby on Rails來開發包含時區轉換的應用程序。發現了一件有趣的事情:現在是2013年3月26日,我將時區設置爲雅典,它似乎已經在DST(Time.zone顯示GMT +2雅典,但格式化時間顯示+0300)。然後我改成開羅時間,格式化的時間回到+0200Ruby中的DST不準確?

但是,根據http://www.timeanddate.com/time/dst/2013.html,夏令時的變化應該發生在3月31日。它不應該在DST中。

這是Ruby中的錯誤,還是我犯了一個錯誤?

編輯: 我從數據庫格式化日期時間,即4月1日。因此,該程序將該時間格式化,並顯示DST爲「該」日期時間,而不是在當前時間顯示。

我的不好。謝謝大家

+0

什麼是您正在運行的代碼?通過改變時區,你的意思是什麼? – 2013-03-26 03:49:27

+1

顯示您正在談論的代碼非常重要,而不是讓我們想象它。 – 2013-03-26 04:32:42

回答

1

我懷疑你看到的UTC並不是你所期望的。如果您正在查看時區,我相信UTC偏移量不會改變爲DST,但如果您處理特定的時間並要求UTC偏移量,您將看到您的預期。

> ActiveSupport::TimeZone['Athens'].now.utc_offset 
=> 7200 

> (ActiveSupport::TimeZone['Athens'].now+1.week).utc_offset 
=> 10800 
+0

我認爲,這個過程總是處理一個時區的特定時間,而不是時區本身。 – 2013-03-26 03:53:30

+0

謝謝,這是我進入的確切錯誤 – bobzsj87 2013-03-27 03:10:05