我想要的简单的事情是在数据库中以 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。没有其他的。
有任何想法吗?