我们有一个Quartz.NET cron触发设置,需要使用以下计划执行作业:
每天02:00在商人时区
但是,当夏令时(DST)发生异常时,即:
我们已经知道这种行为是设计的(http://www.quartz-scheduler.net/faq.html#daylight),但人们使用什么来解决这个DST问题呢?
干杯
Billy Stack
答案 0 :(得分:1)
由于您提出此问题,您指向的链接可能已在三年左右更新(!)。看来这份工作不应该被执行两次。
我不确定夏令时开始时美国是否正式“发生”02:00,因此可以通过将其设置为01:59:59(cron触发器)来解决对工作在02:00跳过执行的担忧“59 59 1?*”),只要你在北美。其他国家/地区可能会在不同的夜晚发生变化。例如,在欧洲,更改时间是01:00,因此最好将触发器设置为02:00:01
答案 1 :(得分:1)
刚刚遇到同样的问题,虽然在我的情况下触发器没有安排在0:00和DST更改时间(美国的2:00)之间触发。相反,我有一份工作在早上8点运行MON-FRI,所以它在11月5日星期一,即DST更改日后的第二天运行了两次。
如果你阅读了问题中链接的FAQ项目,那就有意义了。 Cron触发器唤醒,触发工作,然后计算下次唤醒。当它在星期五早上8点醒来时,计算下一次运行时间为周一早上8点。然而,到了星期一早上,早上8点变成了早上7点,所以当时触发了触发器。然后当它运行时,下一次“正确”计算为早上8点,所以它也在那时再次运行。
希望这有助于有人努力理解这个问题。
答案 2 :(得分:-1)
工作在秋天运行两次,在春天完全停止。安排什么时间都没关系。问题曾经是,现在仍然是:“您如何阻止这种情况发生?”如果您在时间更改之后并且在运行之前手动删除所有作业,然后将其重新添加,则可以正常工作。我还没有看过它,但是认为这可以自动化。编写一些内容,以读取所有计划的作业,并添加它们并删除旧记录。无论您编写什么内容,都需要在Windows作业计划程序中运行,因为如果它是从Quartz运行的,那么它根本不会在春季运行。