我正在尝试在我的模型中检索当天的所有条目:
where('date(created_at) = date(?)', Date.today)
但是,由于时区(我的当地时间是UTC + 2),我没有预期的结果。例如,如果在午夜后一分钟创建了一个条目,则在数据库中,它将被存储在22:01(所以不是“Date.today”)。
有办法吗?
修改
作为网站的管理员,我想在当地时间“今天”显示条目的数量(这仅用于统计目的!)。所以我想保留时间戳存储在utc中,但在此请求期间将它们转换为我当地的时区!
答案 0 :(得分:0)
您可以通过多种方式设置正确的时区。一个在这个答案中描述:
https://stackoverflow.com/a/6118837/567126
在application.rb中添加以下内容
config.time_zone ='东部时间(美国和加拿大)'
答案 1 :(得分:0)
where('date(created_at) = ?', Time.zone.now.to_date)
答案 2 :(得分:0)
数据库中的时间应存储为UTC。这样,当您使用全球网站时,您可以使用自己的时区为每个用户提供服务。
UI(视图)责任是在用户的本地时区显示时间。
对于您的地方,您应该使用 Time.now.utc 这样,您正在使用通用UTC搜索数据库。