小编Dan*_*iel的帖子

Rails:鉴于我的数据库是UTC,而我的Time.zone US Eastern,我如何在美国太平洋节省时间?

(我在Ruby MRI 1.9.2上使用Rails 3.2.3)

一切都以UTC为中心存储.这很好.每个用户都有一个'时区'属性.我的ApplicationController有一个前置过滤器,可以将Time.zone调整为用户存储的时区.这也很好.

鉴于上述情况,如果我的用户用时间完成日期时间选择,那么该时间应该在Time.zone中,并且Rails将自动调整并将其保存为UTC.这也是好的.

现在:我希望我的用户能够在另一个时区填写一个时间,然后将其存储为UTC.但是,Rails期望已完成的日期时间选择(在之前由ApplicationController设置)Time.zone中填写.因此Rails会错误地调整为UTC .

如何实现我的目标,即将输入的时间保存为第三时区?

插图:

我的使用场景是佛罗里达州的用户调整属于西海岸酒店的文档的日期.他们希望进入西海岸的时间.

我正在使用jQuery来设置带有样式选择器的文本框,所以我有一个方法将字符串输出到文本框:

<%= f.text_field(:created_at, :value => adjusted_to_hotel_time(@document.created_at), :class => 'text datetime_picker') %>

def adjusted_to_hotel_time(time)
  time.in_time_zone(@current_hotel.timezone).to_s(:admin_jquery) # formatted for the jQuery datetime_picker text fields.
end
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是当保存@document时,Rails会错误地调整为UTC.我不知道我不知道的是什么 - 如何将在该字段中输入的数据"标记"为@ current_hotel.timezone,以便Rails在保存父对象时将正确地偏移到UTC?

ruby time timezone ruby-on-rails

4
推荐指数
1
解决办法
4016
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

time ×1

timezone ×1