【问题标题】:Rails 3.1 time zone confused?Rails 3.1 时区混乱?
【发布时间】:2011-10-24 02:14:49
【问题描述】:

这是我目前的情况:

我有一个具有属性时区的用户类。

当用户使用 start_time (3pm) 和 end_time (5pm) 创建 Lecture 时,我想确保数据库中的 start_time 和 end_time 实际上是用户所在时区的下午 3 点和下午 5 点。

在我的应用程序控制器中,我正在执行以下操作:

def set_timezone
  if current_user
    Time.zone = current_user.time_zone or "Eastern Time (US & Canada)"
  end
end

当上述讲座被保存到数据库时,它似乎增加了 4 个小时。是否将其转换回UTC?奇怪的是,当我在视图中显示时间时它是正确的(我猜它是从 UTC 时间转换回 EST 时间)。

我希望这样,如果用户选择下午 4 点,它将作为下午 4 点保存在数据库中,并且当我在视图中显示该时间时,它是下午 4 点。我目前做错了什么?

编辑:在将它们存储在数据库中时,rails 似乎也将所有时间转换为 UTC。在我进行涉及时间的查询之前,这没问题(我必须手动将其转换为 UTC)。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    MySQL also has a time zone.

    值得注意的是(强调我的):

    当前会话时区设置会影响区域敏感时间值的显示和存储。这包括由 NOW() 或 CURTIME() 等函数显示的值,以及在 TIMESTAMP 列中存储和检索的值。 TIMESTAMP 列的值从当前时区转换为 UTC 进行存储,从 UTC 转换为当前时区进行检索。

    是否值得为此做点什么……不确定。我很怀疑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多