2012-01-10 36 views
1

我们有一个Quartz.NET cron的触发设置,需要使用下面的计划执行作业:Quartz.NET和夏令问题

在02:00hrs在商家时区每天

然而,即当夏令时(DST)时发生异常:

  • 当从+2 GMT +3 GMT商家时区移动时,工作没有得到执行。
  • 当商家时区从+3 GMT移至+2 GMT时,作业会执行两次。

我们已经知道这种行为是通过设计(http://www.quartz-scheduler.net/faq.html#daylight),但是人们用什么来解决这个DST问题?

干杯

比利堆栈

回答

1

你点了链接,可在三年内被更新或左右(!),既然你问了这个问题。看起来这个工作不应该被执行两次。

夏令时开始时,我不确定是否在美国正式“发生”02:00,因此可以通过将其设置为01:59:59(cron触发“59 59 1?*”),只要你在北美。其他国家可能会在不同的夜间时间发生变化。例如,在欧洲,更改时间为01:00,因此最好将触发器设置为02:00:01

1

刚刚遇到同样的问题,尽管在我的情况下触发器不是计划在零点和DST更改时间(美国2点)之间触发。相反,我的工作是在早上8点运行MON-FRI,因此它在DST更改日后的第11天的第11天星期一运行了两次。

如果您阅读问题中链接到的常见问题解答项目,这有点合理。 Cron触发器唤醒,触发工作,然后计算下一次醒来。当周五早上8点醒来时,下次计算在星期一上午8点运行。然而,星期一早上早上八点就变成了早上七点,所以当时触发了。然后当它运行时,下一次“正确”计算为上午8点,所以它在那个时候再次运行。

希望这可以帮助有人努力了解这个问题。