使用特定时区保存Rails记录

Dav*_*vid 4 timezone ruby-on-rails

如何用自己的特定时区和在蒂华纳举办的下一场活动在柏林举办一场活动?

要求用户为事件选择城市,作为例如+02:00的来源.

我想收到这样的时间代码:

eventstart = "2011-07-22T18:00:00+02:00"
Run Code Online (Sandbox Code Playgroud)

您将如何创建该表单?

更新:

由于许多原因,实现了标准UTC的保存很好.所以现在我在视图中改变一个时间字符串,为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"
Run Code Online (Sandbox Code Playgroud)

繁琐,但现在工作.欢迎改进的想法!

nar*_*ren 7

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
Run Code Online (Sandbox Code Playgroud)