2016-11-11 71 views
4

我在查詢與用戶相同的日期的對象(即如果它是在用戶的時區2016-11-11,他們應該看到發生在11- 11在他們的時區)。ActiveRecord在用戶時區的日期查詢

我的數據庫以UTC格式存儲事件日期時間(類型爲datetime)。當我嘗試:

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

我希望它拉事件,其中日期時間是在同一個日期作爲當前用戶的時區(這是在around_action通過Time.use_zone設置)。我有這個設置在application.rb中:

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

然而,在返回存儲在第二天UTC事件。例如,11/11上午10點的山區時間事件存儲在11/12 5AM(UTC)。如11/11所發生的,它仍應該返回給Mountain Time用戶。

如何查詢數據庫以獲取當前用戶日期的事件?非常感謝!

回答

2

多虧了這個問題,我找到了答案:

Getting date with timezone offset in 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)

相關問題