2013-08-22 82 views
1

我想寫一個每n周觸發一次的Cron表達式。每隔n周執行一次Cron表達式

我曾經想過是這樣的:

0 0 */21 * * 

2013-09-01 00:00:00 
2013-09-22 00:00:00 
2013-10-01 00:00:00 
2013-10-22 00:00:00 

this的Cron測試儀

但它觸發每隔1日,除了21日。

想法?

回答

1

如果您使用Quartz,那麼你可能能夠實現這一目標的時間表與SimpleTrigger代替:

 Trigger trigger = newTrigger() 
     .withIdentity(triggerKey("myTrigger", "myGroup")) 
     .withSchedule(simpleSchedule() 
      .repeatHourlyForever(n * 7 * 24)) 
     .startAt(...) 
     .build(); 
0

的「/」語法指定期間的增量,而不是重複間隔。承認一個微妙和混亂的差異。

在這種情況下,在1個月期間只有一個可用增量(21天)。第一個數字指定開始的值,在這種情況下爲0.在'/'之前指定'*'等同於指定0.因此,作業只會在第一天和第21天觸發。

如果你只想每個月發一次而不是重複一次,那麼你可以使用表達式0 0 21 * *

如果您希望工作定期觸發,那麼您可以使用指定repeatInterval的Quartz SimpleTrigger

相關問題