【发布时间】:2009-06-01 15:11:46
【问题描述】:
我正在考虑将我们的 Rails 2.3 应用程序转换为正确处理时区(目前一切都是 UTC,这是不对的,但 很方便!)。
我在 environment.rb 中有这些设置:
config.active_record.default_timezone = :utc
config.time_zone = "UTC"
接下来,对于我们应用程序中的每个请求,我计划进行以下设置来设置时区:
Time.zone = user.time_zone
user.time_zone 是他们选择的偏好(例如US Pacific Time)。
这在应用程序中运行良好,但我的问题与 Rails 然后存储在 MySQL 数据库中的内容有关。如果用户选择 2009 年 6 月 1 日的日期,则会以 UTC 格式将其存储在数据库中的 DATETIME 字段中,但带有时区偏移量。例如,如果用户选择了GMT+6 时区,则选择的日期 2009 年 6 月 1 日最终在数据库中为2009-06-01 06:00:00 UTC。
我希望这会以2009-06-01 00:00:00 UTC 的形式存储在数据库中。我的想法是正确的还是 Rails 在这里做了一些意想不到的事情?
【问题讨论】:
-
您只需要在用户的时区显示日期,还是将其专门存储在该时区中很重要?
-
Chris 我想将它存储在 UTC 中,并且只显示用户所在时区的日期
标签: mysql ruby-on-rails date time timezone