我在我的rails应用程序中有一些活动的记录查询,它会进行一些日期比较。具有Date.today的查询在美国不会产生结果,但它确实在印度产生了结果。
例如,
Vehicle.where('added_date >= ?', Date.today)
上述活动记录查询产生的结果包含用户今天添加的所有车辆,但在美国,它只生成日期大于今天日期的结果。 我用Google搜索并将上面的查询更改为
Vehicle.where('added_date >= ?', Date.current)
不知道这会有什么不同吗?
答案 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,您将获得同一时间。