构建包含当前日期的 Quartz Cron 表达式

Building a Quartz Cron expression that includes current date

是否可以有一个带有 cron 表达式的 (Quartz) 调度程序,它每 5 天(包括今天的日期)触发一次。 例如,如果我在 2016 年 12 月 14 日安排工作,间隔为 5 天,那么它应该在 12 月 14 日、12 月 19 日、12 月 24 日、12 月 29 日、1 月 3 日、1 月 8 日、1 月 13 日、1 月 18 日触发、1 月 23 日、1 月 28 日、2 月 2 日等等……? 我试过“17 33 15 14/5 * ? *”但没有给出准确的结果。 请帮助!!!

CronTrigger 不适合这种计划,因为这些计划无法使用 cron 表达式来表达。你想要做的是使用 CalendarIntervalTrigger 而不是专门为这些目的量身定制的。

我在我们的 Quartz 调度程序管理和监视工具 (QuartzDesk) 中附上了 CalendarIntervalTrigger 编辑器的屏幕截图。

如您所见,您需要做的就是:

  1. 将触发器的开始日期时间设置为 2016 年 12 月 14 日。
  2. 将重复间隔单位设置为'Day'。
  3. 将重复间隔设置为 5(即 5 天)。

在编辑器 window 旁边,有一个视图显示您为触发器计算的下一次触发时间。列表中缺少 12 月 14 日和 12 月 19 日,因为今天是 12 月 20 日,视图仅向您显示未来的触发触发时间。

以编程方式创建 CalendarIntervalTrigger 的实际 Java 代码类似于您用于创建 CronTrigger 的代码,因此我不在此处包括它。要点是你必须使用不同的触发器类型并设置它的两个属性,如上所述。