2012-06-30 2 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 показывает раскрывающийся список, содержащий кучу часовых поясов по Гринвичу не в UTC (например, "(GMT-08: 00) Тихоокеанское время").

Я думал, что по умолчанию часовой пояс указан в UTC. Как мне сделать это в UTC (например, (UTC-08: 00) по тихоокеанскому времени)?

Это новый проект, и я не касался конфигурационного файла.

И я использую ruby-1.9.3-p0, рельсы 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 для Rails, хотя по умолчанию для Active Record используется значение: local при использовании вне Rails.

+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

Это тоже не сработало. Спасибо хоть! Я буду рыть. –