gpt4 book ai didi

ruby-on-rails - Rails Postgres 时区处理

转载 作者:行者123 更新时间:2023-11-29 13:06:34 25 4
gpt4 key购买 nike

我想要的简单事情是在数据库中以 UTC 格式存储 DateTime 并再次以 UTC 格式检索它,但 Rails 似乎假设我将 DateTime 存储在本地时区并添加了 8 小时差异 (PST)。我的模型中有一个 DateTime 字段。如果我发送一个请求 (PUT) 来更新我模型的特定实例中的这个字段,无论出于何种原因,时区都会以某种方式混淆:

通过 PUT 发送到 rails:2012-02-17T03:46:58Z

通过后续 GET 返回:2012-02-17T11:46:58Z

时差恰好是 8 小时,可以用我的时区 PST (-08:00) 来解释。

我在 Rails 3.1.3 上使用 Datamapper 1.2。

我将我的应用程序配置时区明确设置为 UTC。

我还尝试使用 dm-zone-types。没有为我改变任何东西。

我的 repo 上的 git-bisect 显示,当我将数据库从原始 sqlite 切换到 postgres 时,引入了这种不当行为。此提交仅更改了 database.yml 和 gemfile。没有别的。

有什么想法吗?

最佳答案

我自己找到了一个 hacky 解决方案:

将环境变量 TZ 中的服务器时区设置为“UTC”。为了持久化这个配置选项,我决定把环境变量设置放在config/boot.rb中:

ENV['TZ'] = "UTC"

我仍然觉得很脏,这个解决方案仍然让我感到不安。因此,我们非常感谢任何更好/更清洁的解决方案!

关于ruby-on-rails - Rails Postgres 时区处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9308471/

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