【发布时间】:2011-02-22 03:25:29
【问题描述】:
默认情况下,Rails 的 config.time_zone 是 UTC。因此,created_at、updated_at 等字段以 UTC 格式保存。
现在,假设用户的时区是太平洋标准时间 (PST)。
为了在用户的时区中显示日期和时间,我将Time.zone 设置为 PST。
现在,当用户在表单中输入日期(用户的本地时区,即 PST)时,控制器会根据 Time.zone 的设置接收该日期。
但是,我想以 UTC 格式将所有时间保存在数据库中。
那么,我将如何将参数哈希中的任何日期/时间字段就地转换为 UTC?我想知道是否有 Rails 可以自动进行转换的解决方案?
我希望将收到的任何日期时间字段的任何日期/时间转换为 UTC,而不必在每个控制器中编写转换代码。
更新
我通过将 Time.zone 设置为 Pacific Time (US & Canada) 以及 Eastern Time (US & Canada) 进行测试,然后保存模型。两种情况下的created_at 时间都是UTC。这证实了设置Time.zone 对Rails 在created_at 字段中保存的时间没有影响。该值仅受config.time_zone 影响(如果未在application.rb 中定义,则默认为UTC)
我对这一切感到很困惑!
【问题讨论】:
标签: ruby-on-rails-3