如何使用自己的特定时区保存柏林的事件,并使用不同的时区保存蒂华纳的下一个事件?
要求用户为事件选择一个城市,例如作为来源+02:00。
我想收到这样的时间码:
eventstart = "2011-07-22T18:00:00+02:00"
您将如何创建该表单?
更新:
出于多种原因,实现保存为标准 UTC 是可以的。因此,现在我正在更改 View 中的时间字符串,以根据用户的本地时间为 eventstart 显示 *distance_to_time_in_words*。
蒂华纳的事件,从柏林时间观看:
old_zone = Time.zone
#=> "Berlin"
Time.zone = "Tijuana"
t = Time.zone.parse(eventstart.to_s[0..-7])
#=> 2011-07-22 18:00:00 +08:00
Time.zone = old_zone
#=> "Berlin"
distance_of_time_in_words(Time.now.in_time_zone, t)
#=> "9 hours"
麻烦,但现在有效。欢迎改进意见!
最佳答案
添加 time_zone
列到您的数据库并使用 time_zone_select
在您的表单中让用户选择 time_zone
他正在为此创建事件。
在模型中,您可以将日期时间转换为特定于区域的日期时间并将 utc 存储在数据库中。您可以使用如下所示的助手
def local_time(date)
Time.use_zone(self.time_zone) do
Time.zone.at(date.to_i)
end
end
关于ruby-on-rails - 使用特定时区保存 Rails 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6792856/