Rails:如何从原始时区的模型中获取日期时间(不同的条目=不同的时区)

时间:2016-10-21 08:06:46

标签: ruby-on-rails ruby postgresql datetime

给出我想用"starts_at"=>"2016-02-04T14:30:00.000+01:00"

创建的模型

此条目存储在postgres中,starts_at应该保留时区 - 这一点很重要,保持原样并且这次显示为完全 - 14:30。 商业意义:用户可以节省他在伦敦的时间。来自澳大利亚的管理员检查条目,他应该在用户的时区

中与用户交谈

同时我需要服务器才能正确理解它是什么时间,所以我可以在1小时内选择条目"

Rails给出:

[28] pry(main)> entry.starts_at
=> 2016-02-04 13:30:00 UTC
[17] pry(main)> entry.attributes_before_type_cast["starts_at"]
=> "2016-02-04 13:30:00+00"

我想那个postgress扔掉时区,虽然我尝试输入:

  t.change :starts_at, 'timestamp with time zone'

如何以适当的时区存储/检索字段,该字段存储在postgress中。 它可以是不同条目的任何时区,代码不知道哪个条目具有哪个时区,因此我们不能使用in_time_zone (除非我将时区存储在单独的字段中,看起来太虚伪了)

是否有类似do_not_touch_timezones_for :starts_atstarts_at.original_timezone或全局配置的内容。

尝试self.skip_time_zone_conversion_for_attributes = [:starts_at, :ends_at] - 没有任何影响

1 个答案:

答案 0 :(得分:1)

Time#parse是否有任何问题?它似乎返回你想要的时间:

Time.parse("2016-02-04T14:30:00.000+01:00")
#=> 2016-02-04 14:30:00 +0100