Rails查询更改时间

Rails query changes the time

<% date = Time.now.beginning_of_day %>
<%= date %> prints 2016-06-01 00:00:00 +0600
<% schedule = Schedule.where(:date_ => date).first %>
<%= date %> prints 2016-05-31 18:00:00 UTC

2016-06-01 00:00:00 +0600

2016-05-31 18:00:00 UTC

使用 mongoid

date_为时间字段

我当地的时区是 UTC +6

如果我的问题很愚蠢,我很抱歉-_-'

▶ Time.now
#⇒ 2016-06-26 07:43:42 +0200
▶ Time.now.utc
#⇒ 2016-06-26 05:43:46 UTC

也就是说,你得到的2016-06-01 00:00:00 +06002016-05-31 18:00:00 UTC同一时间,打印在不同的时区。

在 Rails 中,您应该始终明确定义您正在交易的时区:

Time.now # incorrect
Time.zone.now # correct

进一步阅读:http://danilenko.org/2012/7/6/rails_timezones/