对用户时区中的日期进行活动记录查询



我正在查询相对于用户的相同日期的对象(即,如果它是2016-11-11在用户的时区,他们应该看到在他们的时区11-11发生的事件)。

我的数据库以UTC格式存储事件日期时间(datetime类型)。当我尝试:

Event.where(DATE(datetime) = ?", Time.zone.today)

我希望它能够拉出日期时间与当前用户的时区(通过Time.use_zonearound_action中设置)在相同日期的事件。我在application.rb:

中设置了它

config.active_record.time_zone_aware_types = [:datetime, :time]

但是,不返回存储在第二天UTC的事件。例如,山地时间11/11晚上10点的事件存储在UTC时间11/12上午5点。它仍然应该返回给山地时间用户,因为发生在11月11日。

如何查询数据库以获取当前用户日期的事件?很多谢谢!

多亏了这个问题,我找到了答案:

在postgres中获取带有时区偏移的日期

我基本上需要首先将日期时间转换为UTC ,然后转换为用户时区。

Event.where("DATE(datetime AT TIME ZONE 'UTC' AT TIME ZONE ?) = ?", Time.now.in_time_zone(current_user.time_zone).strftime("%Z"), Time.zone.today)

相关内容

  • 没有找到相关文章

最新更新