Cron Expression每n周执行一次

时间:2013-08-22 18:41:17

标签: cron quartz-scheduler cronexpression

我正在尝试编写一个每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

Per this Cron测试员

但是除了21世纪之外,它每一年都会触发。

想法?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Quartz,那么您可以使用SimpleTrigger完成该计划:

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

答案 1 :(得分:0)

'/'语法指定期间的增量而不是重复间隔。不可否认,这是一种微妙而混乱的差异。

在这种情况下,1个月期间只有一个可用的增量(21天)。第一个数字指定要开始的值,在本例中为0.在'/'之前指定'*'相当于指定0.因此作业将仅在第一天和第21天触发。

如果您只想每月解雇一次而不是重复,那么您可以使用0 0 21 * *这个词。

如果您希望定期触发作业,则可以使用指定了SimpleTrigger的Quartz repeatInterval