gpt4 book ai didi

mysql - 在 Rails 应用程序的 MySQL 数据库中使用 TimeZone 正确存储日期

转载 作者:可可西里 更新时间:2023-11-01 07:05:49 24 4
gpt4 key购买 nike

我正在考虑将我们的 Rails 2.3 应用程序转换为正确处理时区(目前一切都在 UTC 中,这是不正确的,但是 很方便!)。

我在 environment.rb 中有这些设置:

config.active_record.default_timezone = :utc
config.time_zone = "UTC"

今后,我计划针对我们应用中的每个请求进行以下设置以设置时区:

Time.zone = user.time_zone

user.time_zone 是他们选择的偏好(例如 美国太平洋时间)。

这在应用程序中运行良好,但我的问题与 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 在这里做了一些意想不到的事情?

最佳答案

这篇博文讨论了 Rails 2.1+ 中的本地时区处理:

http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/

要点是,Rails 会将所有记录以 UTC 格式存储在 DB 中,然后转换为用户时区进行显示。这是有道理的:以中性形式存储所有数据,然后在最后一刻将其转换为所需形式。

关于mysql - 在 Rails 应用程序的 MySQL 数据库中使用 TimeZone 正确存储日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com