gpt4 book ai didi

ruby-on-rails - 模型的日期时间字段在 heroku 上的存储方式与本地主机不同

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

步骤:

在我的本地主机服务器上,我在位于太平洋时区的浏览器中选择时间 2013 年 1 月 18 日上午 10 点至上午 11 点。然后我在 heroku 上的生产服务器上选择完全相同的时间。

如您所见,保存到数据库的输出是不同的。我希望生产表现得像本地主机,并在将时间存储为 UTC 时考虑时区。是什么原因造成的? heroku 服务器处于美国东部标准时间,但这并不能解释这种行为。

Controller :

  def create
puts params[:event][:starts_at]
@event = Event.create!(params[:event])
puts @event.starts_at
end

输出本地主机:

Fri Jan 18 2013 10:00:00 GMT-0800 (PST)

2013-01-18 18:00:00 UTC

输出 Heroku(生产):

Fri Jan 18 2013 10:00:00 GMT-0800 (PST)

2013-01-18 10:00:00 UTC

架构:

 t.datetime "starts_at"

环境:

Ruby on Rails 3.2.11

ruby 1.9.3

Postgres

最佳答案

PostgreSQL 如何处理日期/时间的背景

我认为您的问题已包含在另一个 SO 问题的答案中:

特别是这个答案:

UTC 格式使用此查询:

SELECT * FROM tbl WHERE time_col > (now() AT TIME ZONE 'UTC')::time

使用此查询获取本地时区的时间:

SELECT * FROM tbl WHERE time_col > now()::time

Rails & ActiveRecords & 日期/时间

rails/rails github问题也讨论了它:

pixeltrix 有评论上面写着:

@deathbob sorry for the late reply - the accepted values for config.active_record.default_timezone are either :utc or :local. If you set it to something other than :utc it will assume :local so what you're seeing is the expected behavior.

要修复 ActiveRecords 中的时间,以便它始终作为 UTC 处理,您可以设置以下变量:

config.active_record.default_timezone = :utc

关于ruby-on-rails - 模型的日期时间字段在 heroku 上的存储方式与本地主机不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14252579/

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