1

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

根据这个Cron 测试器

但除 21 日外,它每隔 1 日触发一次。

想法?

4

2 回答 2

1

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

     Trigger trigger = newTrigger() 
         .withIdentity(triggerKey("myTrigger", "myGroup"))
         .withSchedule(simpleSchedule()
             .repeatHourlyForever(n * 7 * 24))
         .startAt(...)
         .build();
于 2013-08-27T20:06:54.147 回答
0

'/' 语法指定期间的增量,而不是重复间隔。诚然,这是一个微妙而令人困惑的差异。

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

如果您只想每月解雇一次工作而不是重复,那么您可以使用表达式0 0 21 * *

如果您希望作业定期触发,那么您可以使用指定的SimpleTriggerQuartz repeatInterval

于 2013-10-08T15:15:28.553 回答