为什么 delayed_job 在 delayed_job 的 table 中记录了错误的时间戳?

Why is delayed_job recording an incorrect time stamp in the delayed_jobs table?

我觉得我遇到了与此类似的问题 post Why is the timezone off in delayed_job?

我在 config/application.rb 中设置了我的 time_zone 如下:

module Bane
  class Application < Rails::Application
    config.time_zone 'Eastern Time (US & Canada)'
  end
end

在查看我的 delayed_jobs.log 时,我记录了正确显示的时间戳。但是,当我查看 delayed_jobs table 时,它显示 2015-11-19 14:25:11.637 这不是我所期望的 (2015-11-19 09:25:11.xxx)。

当您设置 config.time_zone 设置时,Rails 仍然使用 UTC 存储日期,但在加载记录后将它们转换为所需的时区。

还有一个设置 — config.active_record.default_timezone,它会影响日期在数据库中的存储方式,但据我所知,它只能设置为 :local,或者(默认):utc。但是,如果您可以将服务器时区设置为 EST,那么我相信它应该可以工作。

编辑:看来您实际上也可以为 default_timezone 设置任何时区。例如:config.active_record.default_timezone = 'Eastern Time (US & Canada)'.