cron 表达式每 6 个月运行一次,并在每月的第二个星期五运行

cron expression to run every 6 months and on second friday of the month

我的 cron(Java Quartz 作业调度程序)表达式应该在 1 月 9 日中午 12 点(本月的第二个星期五)触发,下一个计划应该是从 1 月 9 日开始的 6 个月和该月的第二个星期五,并且时间中午 12 点。

下面的表达式会按预期工作吗?

*  * 12 ? 1/6 6#2

此致, 大坝

您的 1/6 需要包括以 6 个月为步长涵盖的全部范围。

因此,例如,1-7/6 将从第 1 个月(1 月)开始,然后转到第 7 个月(7 月)作为下一个计划运行,因为它涵盖了从 1-7 的范围以 6 步为单位。

你的完整命令应该是

0 12 8-14 1-7/6 5

解读:

0 = 运行 仅在分钟 :00,
12 = 运行 中午,
8-14 运行 仅在一个月中的 8-14 日期间(第二个星期五只能落在这些日期中的一个,第一个星期五不能落在其中任何一个),
1-7/6 运行 仅在第 1 个月(一月)或第 7 个月(七月),
5 并且仅在第 5 天(即星期五,因为星期日的索引为 0 或 7)。

由于 cron 运行s 仅当上述所有条件都匹配时,命令将在 1 月和 7 月的第二个星期五中午 12 点 运行。

0 0 12 ? 1-7/6 6#2

0 --> run only at Secs :00
0  --> run only at minute :00
12 --> Runs on 12 noon
?  --> no specific value
1-7/6 --> runs only on months 1 (January) or 7 (July)
6#2 --> Second friday of the month

Next few Schedules

1.  Friday, January 9, 2015 12:00 PM  
2.  Friday, July 10, 2015 12:00 PM  
3.  Friday, January 8, 2016 12:00 PM  
4.  Friday, July 8, 2016 12:00 PM  
5.  Friday, January 13, 2017 12:00 PM