ruby-on-rails – 模型的datetime字段以不同方式存储在heroku中,
脚步:
在我的本地主机服务器上,我选择2013年1月18日上午10点 – 上午11点在我位于太平洋时区的浏览器中.然后我在heroku上的生产服务器上选择完全相同的时间. 如您所见,保存到数据库的内容的输出是不同的.我希望生产行为与localhost一样,并在将时间存储为UTC时考虑时区.是什么造成的? heroku服务器在EST中,但不考虑此行为. 控制器: def create puts params[:event][:starts_at] @event = Event.create!(params[:event]) puts @event.starts_at end 输出本地主机:
输出Heroku(生产):
架构: t.datetime "starts_at" ENV: Ruby on Rails 3.2.11 Ruby 1.9.3 Postgres的 解决方法
关于PostgreSQL如何处理日期/时间的背景知识
我认为你的问题在另一个SO问题的答案中有所涉及: > Ignoring timezones altogether in Rails and PostgreSQL 特别是这个答案: > https://stackoverflow.com/a/9576170/33204 将此查询用于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问题也讨论了它: > ActiveRecord converts time to default zone on write; assumes UTC on read pixeltrix有评论说:
要在ActiveRecords中修复时间以便始终将其作为UTC处理,您可以设置以下变量: config.active_record.default_timezone = :utc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |