【发布时间】:2012-12-24 12:36:01
【问题描述】:
步骤:
在我的本地主机服务器上,我在位于太平洋时区的浏览器中选择时间 2013 年 1 月 18 日上午 10 点 - 上午 11 点。然后我在 heroku 上的生产服务器上选择完全相同的时间。
如您所见,保存到数据库的输出是不同的。我希望生产表现为本地主机,并在将时间存储为 UTC 时考虑时区。这是什么原因造成的? heroku 服务器在 EST 中,但这并不能解释这种行为。
控制器:
def create
puts params[:event][:starts_at]
@event = Event.create!(params[:event])
puts @event.starts_at
end
输出本地主机:
2013 年 1 月 18 日星期五 10:00:00 GMT-0800 (PST)
2013-01-18 18:00:00 UTC
输出 Heroku(生产):
2013 年 1 月 18 日星期五 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
【问题讨论】:
-
config/application.rb中的时区配置是什么? -
@ThongKuah 我把它注释掉了,cmets 说这意味着它是 UTC,因为它默认是 UTC。
-
嘿,约翰,这是否与 stackoverflow.com/questions/2719330/… 有某种关系?我以前见过 Heroku 出现奇怪的 tz 问题。
-
@Saran 该答案的解决方案不走运。它似乎与记录时间有关。
-
@John 在 Heroku 和 localhost 中运行
\d your_table?您是否有没有时区的时间戳作为您的 postgres 日期类型?
标签: ruby-on-rails postgresql heroku timezone ruby-on-rails-3.2