每 2 天执行一次 CronExpression

CronExpression every 2 days

我知道之前有人问过这个问题。但是这些问题的答案在我看来是不正确的。

我想要一个每 2 天安排一次的 (Quartz) CronExpression。 CronExpression "should be" 0 0 0 1/2 * ? *.

但是:从今天(2017 年 10 月 9 日)开始 CronMaker 表明这不是真的。该表达式的基本意思是:从每个月的第一天开始,每 2 天安排一次。这意味着:从 2017 年 10 月 9 日开始,接下来的时间是:

2017 年 10 月 11 日,星期三 12:00 上午
2017 年 10 月 13 日星期五 12:00 上午
2017 年 10 月 15 日,星期日 12:00 上午
2017 年 10 月 17 日星期二 12:00 上午
2017 年 10 月 19 日星期四 12:00 上午
2017 年 10 月 21 日星期六 12:00 上午
2017 年 10 月 23 日星期一 12:00 上午
2017 年 10 月 25 日,星期三 12:00 上午
2017 年 10 月 27 日星期五 12:00 上午
2017 年 10 月 29 日,星期日 12:00 上午
2017 年 10 月 31 日星期二12:00上午
2017 年 11 月 1 日,星期三 12:00 上午

如你所见:最后两次之间只有1天。

所以当我使用 freeformatter 来描述 cronexpression 时,它指出:

At 00:00:00am, every 2 days starting on the 1st, every month

好吧,上面列出的时间显示了这一点。但我需要每 2 天正确触发的东西。

2017 年 10 月 31 日星期二12:00上午
2017 年 11 月 2 日星期四 12:00 上午

等等。

显然,石英的简单触发器对我来说不是一个真正的选择!

那是因为你误解了 cron 表达式的工作原理。对于每个月,它将从每月的第一天开始。如果其他方式可行,下个月将不适合表达式的 1/2 部分。

更详细的解释,看这里: