Date.today现在不在美国查询记录,但在印度它确实如此

时间:2018-01-10 11:22:48

标签: ruby-on-rails date

我在我的rails应用程序中有一些活动的记录查询,它会进行一些日期比较。具有Date.today的查询在美国不会产生结果,但它确实在印度产生了结果。

例如,

Vehicle.where('added_date >= ?', Date.today)

上述活动记录查询产生的结果包含用户今天添加的所有车辆,但在美国,它只生成日期大于今天日期的结果。 我用Google搜索并将上面的查询更改为

Vehicle.where('added_date >= ?', Date.current)

不知道这会有什么不同吗?

2 个答案:

答案 0 :(得分:0)

Date.today根据系统时间返回日期

因此,如果您在印度,当前日期时间为2018-01-10 07:04:32 +0530

然后Date.today将返回2018-01-10

同时,美国的日期时间为Tue, 09 Jan 2018 17:36:00 PST -08:00

因此,对于美国的机器,Date.today将返回09 Jan 2018

因此我们应该尝试将Date.current用于数据库查询

Date.current以rails app指定的时区返回今天的日期

current方法的Rails实现如下(see rails code

def current
  ::Time.zone ? ::Time.zone.today : ::Date.today
end

答案 1 :(得分:0)

使用Time.now.utc,您将获得同一时间。