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



我需要在午夜运行一个CRON,它会自动为我公司的员工分配一些定期任务。我面临的情况是,我的公司基本上在美国各地都有办事处,美国有一个以上的时区。所以基本上,我希望这项工作是特定于时区的。此外,我的服务器在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]

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

正如我相信的那样,这可能会奏效,但其他人有其他选择吗?此外,我需要修复夏令时,我真的不确定我想怎么做。

我认为最简单的方法可能是有一个每小时运行一次的单一作业,然后遍历所有办公室,并在作业上次运行时的晚一天找到任何现在的作业。(当然,你需要保持这一点,以及办公室的时区。)这将为你解决夏令时问题,也可以应对时间表中断一段时间的情况——下次它出现时,它会"赶上"所有错过的办公室。

相关内容

  • 没有找到相关文章

最新更新