如何将postgres UTC转换为另一个时区



是否有一种方法将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文档

相关内容

  • 没有找到相关文章

最新更新