【发布时间】:2013-12-02 01:55:20
【问题描述】:
我有一个 Rails 4.0.1 应用程序。某些原因我的查询采用错误的时区。我有以下查询:
puts '=====================', Time.zone.now
@headlines ||= Headline.includes(:admin, :cover).recent.where('published=? AND publish_at<=?', true, Time.zone.now).limit(4)
输出如下所示:
=====================
2013-12-02 09:37:44 +0800
Headline Load (1.3ms) SELECT "contents".* FROM "contents"
WHERE "contents"."headline" = 't'
AND (published='t'
AND publish_at<='2013-12-02 01:37:44.941741')
ORDER BY "contents"."headline_position"
DESC LIMIT 4
如您所见,我的当前时间已在我的查询中转换。为什么?
【问题讨论】:
-
有关 Rails 中时区的信息,请参阅我的博客文章 - jessehouse.com/blog/2013/11/15/… - 日期时间以 UTC 格式存储在数据库中。请注意这两个值是相同的 09:37:44 +0800 == 01:37:44
标签: ruby-on-rails datetime timezone ruby-on-rails-4