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

标签 java cron quartz-scheduler crontrigger

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

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

0 0 0 ? * FRIL 

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

0 0 0 ? * FRIL-1 

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

当月的倒数第二周可能出现在当月的第 3 周或第 4 周。 所以它是:

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

你有什么建议吗?

最佳答案

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

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

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

关于java - 一个月中倒数第二个星期的 Cron 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44785394/

相关文章:

java - java中如何检查shell脚本是否执行成功

java - Eclipse 中的重构工具

python - Apscheduler 可以使用相同的 cron 触发器运行两个作业吗?

java - Spring ThreadPoolTask​​Executor 配置?

java - 如何使用默认的 spring.datasource 启动 quartz 集群?

第一次异常后的java quartz停止计划

java - 如何运行函数并获取值并将其添加到Flutter中的文本中

java - 将方法作为参数传递并在 forEach 循环中使用

linux - 在 shell 脚本中,如何在执行到标准输出(不是标准错误)时回显 shell 命令?

linux - 在 cron 中运行 bash 脚本