一个月中倒数第二个星期的 Cron 表达式

Cron expression for the second to last day of week of the month

我想触发这个月的倒数第二个星期。

通常,这是该月的最后一个星期五(例如:30/06/2017)

0 0 0 ? * FRIL 

我想要倒数第二个(例如:23/06/2017)

0 0 0 ? * FRIL-1 

但是这种语法 return 与以前的结果相同(使用 Quartz 调度程序和 cronmaker

一个月中的倒数第二周可以出现在该月的第三周或第四周。 所以它是:

either : 0 0 0 ? * FRI#3 
or     : 0 0 0 ? * FRI#4 

你有什么建议吗?

我认为您无法使用 cron 语法来表达。
不过,我可以想到一些解决方法:

  • 您可以安排每个星期五的工作,并有一些工作中的逻辑来检查它是否真的是倒数第二个,然后再继续。

  • 另一种选择是为上周五创建一个虚拟 cron 触发器,检索 "next fire time",从该日期减去 7 天并使用该确切日期创建实际触发器 --但是你必须每周都这样做(通过预先安排几个触发器,或者让你的工作在每个运行之后重新安排)。