我需要在午夜运行 CRON,它会自动为我公司的员工分配一些定期任务。我面临的情况是,我的公司基本上在美国各地都有办事处,有超过 1 个时区。所以基本上我希望这项工作在特定时区完成。另外,我的服务器按 UTC 运行。
如果我将 EDT 设置为基准时区(比 UTC 晚 4 小时)并将 CRON 设置为在午夜触发,则 CRON 时间将为
0 0 4 * * ?
我认为可能的方式是,我将其设置为在以下时间触发 7 次,而不是只设置一次:
0 0 4 * * ? [EDT]
0 0 5 * * ? [CDT]
0 0 6 * * ? [MDT]
0 0 7 * * ? [PDT]
0 0 8 * * ? [AKDT]
0 0 9 * * ? [HADT]
0 0 10 * * ? [HST]
因此,一旦其中任何一个被触发,它就会检查我的哪些办公室在这个时区内并完成这项工作。
我相信这可能有效,但除此之外还有其他选择吗? 另外,我需要修复夏令时,我不太确定我想怎么做。
最佳答案
我认为最简单的方法可能是有一个每小时运行一次的作业,然后遍历所有办公室,并找到现在在晚些时候运行的任何一个上次运行作业的时间。 (当然,您需要维护它以及办公室的时区。)这将为您解决 DST 问题,并且还可以应对调度程序停机一段时间的情况 - 下一次出现时,它会“ catch ”它错过的所有办公室。
关于java - 在 Java Scheduler Quartz Cron 中设置多个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257428/