Time.use_zone在活动记录查询期间被忽略



目前时间是旧金山中午12:33。

irb(main):027:0> Time.use_zone("Pacific Time (US & Canada)") { puts Time.zone.now } 2017-10-19 12:33:06 -0700

Time.use_zone("Pacific Time (US & Canada)") { Event.where("starts_at >= ?", Time.zone.now) } Event Load (1.4ms) SELECT "events".* FROM "events" WHERE (starts_at >= '2017-10-19 19:33:22.532660')

从文档和以前的SO线程来看,这似乎是正确的用法。我错过了什么?

更新:

向 AR 查询添加to_s使用了正确的时区。

关于这个特定的查询,你不应该太担心。SELECT查询将您的Time.zone.now转换为 UTC,但访问数据库的其他所有内容也是如此。

发生这种情况是因为默认情况下,Rails 会将所有日期时间转换为 UTC,以存储(和查找)数据库中。当您的时间是下午 12:33 时,它是 UTC 时间 19:33。

相关内容

  • 没有找到相关文章

最新更新