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