每月一周倒数第二天的 Cron 表达式

问题描述 投票:0回答:2

我想触发该月一周的倒数第二天。

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

0 0 0 ? * FRIL 

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

0 0 0 ? * FRIL-1 

但是此语法返回与之前相同的结果(使用 Quartz 调度程序和 cronmaker

该月一周的倒数第二天可以出现在该月的第三周或第四周。 所以是这样的:

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

你有什么建议吗?

java cron quartz-scheduler crontrigger
2个回答
2
投票

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

  • 您可以将工作安排在每个星期五,并在继续之前有一些工作逻辑来检查它是否实际上是倒数第二个。

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


0
投票

对于未来的搜索者,ChronoX 项目可能会帮助您表达这种时间模式;请查看 chronox.tech 或 https://github.com/RobbieL-nlp/chronox-python;

© www.soinside.com 2019 - 2024. All rights reserved.