2012-06-30 59 views
2

我使用time和time_zone:string創建了一個模型。具體地講,我創建使用:Rails time_zone_select下拉菜單顯示GMT而不是UTC

rails generate scaffold Alarm time:time time_zone:string 

我開了一形式如下:

<%= form_for(@alarm) do |f| %> 
    <div class="field"> 
    <%= f.label :time %><br /> 
    <%= f.time_select :time %> 
    </div> 
    <div class="field"> 
    <%= f.label :time_zone %><br /> 
    <%= f.time_zone_select :time_zone, 
     ActiveSupport::TimeZone.us_zones, 
     default: "Pacific Time (US & Canada)" %> 
    </div> 
<% end %> 

當我看到的形式,time_zone_select示出了包含一串時區中GMT不是UTC下拉(例如「(GMT-08:00)太平洋時間」)。

我想默認情況下,時區以UTC顯示。我如何以UTC顯示(例如(太平洋時間(UTC-08:00))?

這是一個新鮮的項目,我沒有觸及任何配置文件。

而我使用ruby-1.9.3-p0,rails 3.2.6和pg 0.13.2。

在此先感謝!

回答

0

時間以UTC格式存儲,但顯示在您當地的時區。

要恢復的時間回UTC在視圖中,使用此方法:

local_to_utc(time, dst=true) 

http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-local_to_utc

或者在你的application.rb全局更改它:

config.active_record.default_timezone = "UTC" 

這將決定是否從數據庫中提取日期和時間時,使用Time.local(如果設置爲:local)或Time.utc(如果設置爲:utc)。缺省值是:utc for Rails,但Active Record默認爲:在Rails之外使用時爲local。

+2

感謝您的回答,但我不確定您是否正確理解我的問題。我不是在談論不以UTC顯示時間,而是組合框中的時區未以UTC顯示。例如,如果您訪問http://railscasts.com/episodes/106-time-zones-in-rails-2-1/,圖片中的組合框將顯示: (UTC-10:00)夏威夷 ( UTC-09:00)阿拉斯加 ... 但在我的組合框,它顯示: (GMT-10:00)夏威夷 (GMT-09:00)阿拉斯加 ... 。希望澄清的問題。謝謝! –

+0

嗯..最好我可以提供的是:'config.active_record.default_timezone =「UTC」' – Trip

+0

這也沒有效果。雖然謝謝!我會繼續挖掘。 –