是否有一种方法将postgres UTC时间转换为用户的时区或至少东部标准时间(我很感激任何一个答案)?
我认为有一种方法可以改变postgres UTC时间,但我不认为没有引起很多问题。从我所读到的,最好在前端使用代码,将其转换为正确的时区?
这对我来说几乎没有意义。
有什么意义?
因此,当用户勾选完成了一个好习惯时,该习惯就会消失,并且应该在明天凌晨12点重新显示,但由于UTC的原因,这些习惯最终会在当天晚些时候重新显示。
habit.rb
scope :incomplete, -> {where("completed_at is null OR completed_at < ?", Date.today)} # aka those habits not completed today will be shown
def completed=(boolean)
self.completed_at = boolean ? Time.current : nil
end
def completed
completed_at && completed_at >= Time.current.beginning_of_day
end
请将您的范围更改为this,它将专门搜索时区。
scope :incomplete, -> {where("completed_at is null OR completed_at < ?", Time.zone.now.beginning_of_day)}
将此代码片段放入应用程序中。rb
config.time_zone = 'Eastern Time (US & Canada)'
并运行此命令,以便将其设置在heroku heroku config:add TZ=America/Los_Angeles
上。
一般也可以使用#in_time_zone
。始终使用像Time.zone.now
那样的时间。
Time.utc(2000).in_time_zone('Alaska') # => Fri, 31 Dec 1999 15:00:00 AKST -09:00
DateTime.utc(2000).in_time_zone('Alaska') # => Fri, 31 Dec 1999 15:00:00 AKST -09:00
Date.new(2000).in_time_zone('Alaska') # => Sat, 01 Jan 2000 00:00:00 AKST -09:00
日期和时区
api文档