0

我正在尝试在我的模型中检索当天的所有条目:

where('date(created_at) = date(?)', Date.today)

但是,由于时区(我的当地时间是 UTC+2),我没有预期的结果。例如,如果在午夜后一分钟创建了一个条目,则在数据库中,它将存储在 22:01(因此不是“Date.today”)。

有没有办法做到这一点 ?

编辑:

作为网站管理员,我想在当地时间“今天”显示条目数(仅用于统计目的!)。因此,我想将时间戳存储在 UTC 中,但在此请求期间将它们转换为我的本地时区!

4

3 回答 3

0
where('date(created_at) = ?', Time.zone.now.to_date)
于 2012-09-04T05:18:48.227 回答
0

您可以通过多种方式设置正确的时区。此答案中描述了一个:

https://stackoverflow.com/a/6118837/567126

将以下内容添加到 application.rb 作品

config.time_zone = '东部时间(美国和加拿大)'

于 2012-09-03T20:30:33.890 回答
0

数据库中的时间应存储为 UTC。这样,当你做一个全球网站时,你可以为每个用户提供他们自己的时区。

显示用户本地时区的时间是 UI(视图)的职责。

对于您应该使用Time.now.utc 这种方式,您正在使用通用 UTC 搜索数据库。

于 2012-09-04T05:50:24.307 回答