0

我有一个 cron 表达式- 0 0 12 */2 * ?

如果开始日期是星期一,时间是上午 11:40,我期待的下一个触发日期是星期一 12:00,然后是星期三、星期五等。

但是当我给出这个表达式时,第一个触发器设置为星期二 12:00,然后是星期四、星期六等。我在http://cronmaker.com上验证了这一点。 为什么星期一会发生这种行为?如果开始日期设置为任何其他日期,它似乎会按照预期的方式运行。因此,如果它设置在星期二上午 11:50,那么第一个触发器是在星期二 12:00。

请帮我理解。这是一个错误还是预期的行为?有没有办法让它在星期一触发?

谢谢

4

2 回答 2

0

首先,您的表达式仅?用于一周中的某一天,因此您实际上并没有控制那部分。

其次,/Cron 表达式中的字符表示增量。当在 a 旁边使用时*,星号仅表示该值的下限,即1月份中的某一天。

因此,您确实是在每个月中每个不平衡的日子都要求在中午生火。并且触发器的开始时间只会将第一个实例限制为该月的下一个不均匀的日子。

您无法使用 cron 触发器表达您似乎想要的东西 - 这是一个基于触发器开始时间的时间表。您应该SimpleTrigger为此使用 s

于 2017-04-28T14:46:03.070 回答
0

您的 cron 计划不关心一周中的哪一天。它只是在每个月的每个不平衡的日子运行。这是预期的行为。

如果你需要它在星期一运行,你应该使用类似的东西0 0 12 ? * MON,WED,FRI

于 2017-04-28T05:05:57.423 回答