2012-01-10 65 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點,所以它在那個時候再次運行。

希望這可以幫助有人努力瞭解這個問題。