Rails DelayedJob run_at 时区差异
Rails DelayedJob run_at Time Zone discrepancy
我正在使用 Rails 延迟作业在特定时间将作业排队到 运行。我在 IST 时区。延迟作业 run_at 也配置为使用 IST 时区。
现在我想在 5:00 下午 IST 触发作业。我将“05:00 pm”作为字符串存储在我的 table 中,并在安排作业之前对其进行解析。
所以,
Time.parse('05:00 pm')
returns
2020-05-29 17:00:00 UTC
如果我使用 IST 进行解析
Time.parse('05:00 pm').in_time_zone('Chennai')
=> Fri, 29 May 2020 22:30:00 IST +05:30
但我希望 05:00 pm 被解析为
2020-05-29 11:30:00 UTC
这样我延迟的工作就可以在 5:00 下午 IST 理解 运行 这份工作。
我可以手动减少 5:30 小时并排队,但这不是我认为的正确/优化方式。请建议我该怎么做?
你可以做类似的事情
ActiveSupport::TimeZone.new('Chennai').parse("5 pm").utc
或者理想情况下,您可以将时间存储为 "17:00:00 +0530"
,因此很明显您指的是 IST 中的时间。然后简单地 Time.parse("17:00:00 +0530").utc
也可以。
我正在使用 Rails 延迟作业在特定时间将作业排队到 运行。我在 IST 时区。延迟作业 run_at 也配置为使用 IST 时区。
现在我想在 5:00 下午 IST 触发作业。我将“05:00 pm”作为字符串存储在我的 table 中,并在安排作业之前对其进行解析。
所以,
Time.parse('05:00 pm')
returns
2020-05-29 17:00:00 UTC
如果我使用 IST 进行解析
Time.parse('05:00 pm').in_time_zone('Chennai')
=> Fri, 29 May 2020 22:30:00 IST +05:30
但我希望 05:00 pm 被解析为
2020-05-29 11:30:00 UTC
这样我延迟的工作就可以在 5:00 下午 IST 理解 运行 这份工作。
我可以手动减少 5:30 小时并排队,但这不是我认为的正确/优化方式。请建议我该怎么做?
你可以做类似的事情
ActiveSupport::TimeZone.new('Chennai').parse("5 pm").utc
或者理想情况下,您可以将时间存储为 "17:00:00 +0530"
,因此很明显您指的是 IST 中的时间。然后简单地 Time.parse("17:00:00 +0530").utc
也可以。