0

我正在使用 Rails 延迟作业来排队作业以在特定时间运行。我在 IST 时区。延迟作业 run_at 也被配置为使用 IST TimeZone。

现在我想在 IST 下午 5:00 触发工作。我将 '05:00 pm' 作为字符串存储在我的表中,并在安排作业之前对其进行解析。

所以,

Time.parse('05:00 pm')

返回

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

这样我延迟的工作就知道在 IST 下午 5:00 运行这项工作。

我可以手动减少 5:30 小时并排队,但这不是我觉得正确/优化的方式。请建议我该怎么做?

4

1 回答 1

1

你可以做类似的事情 ActiveSupport::TimeZone.new('Chennai').parse("5 pm").utc

或者理想情况下,您可以将时间存储为"17:00:00 +0530",因此很明显您的意思是 IST 中的时间。然后简单地Time.parse("17:00:00 +0530").utc也可以工作。

于 2020-05-29T08:51:48.970 回答