在Java Scheduler Quartz Cron中设置多个时区

时间:2012-09-04 05:45:19

标签: java cron timezone quartz-scheduler

我需要在午夜运行一个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]

因此,一旦触发任何一个,它就会检查我的哪个办公室属于这个时区并将完成这项工作。

我认为这可行,但其他人有没有其他选择而不是这个? 此外,我需要修复夏令时,我不确定我想怎么做。

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法可能是让一个工作每小时运行一次,然后通过所有办公室,然后发现现在的任何工作都会在晚些时候到达一个办公室。当工作上次运行时。 (当然,你需要保持这一点,以及办公室的时区。)这会照顾你的DST问题,并且还应对调度程序停机一段时间的情况 - 下次它上来了,它会“赶上”它错过的所有办公室。