如何在前一个或下一个工作日 运行 Quartz Scheduler
How to run a Quartz Scheduler on a previous or next business day
In this article 解释了如何在特定日历日从 运行ning 中排除 Quartz,但我需要的是不同的东西,我需要 运行 之前的工作或下一个工作日(如果触发日历结果为假期)。
例如,假设工作计划每月 运行,包括 2019 年 3 月 29 日星期五,这是一个假期。
这意味着:
- 非假期:2019 年 3 月 28 日,星期四(当工作应该 运行 如果它 运行s
在假期之前)
- 假期:2019 年 3 月 29 日,星期五
- 假期:2019 年 3 月 30 日,星期六
- 假期:2019 年 3 月 31 日,星期日
- 非节假日:2019 年 4 月 1 日,星期一(当工作 运行 如果它 运行s 在 假期之后)
一种方法是每天运行作业,分析当天是否应该运行,必要时重新触发,但有没有更好的方法?
更新
如果我必须每天触发作业,为什么不使用 Java EE 8 TimerService?
我建议在每个工作日 运行 使用 Cron Expression 例如(运行 每个工作日下午 5 点)
0 00 17 * * MON-FRI
and 在由 Cron 表达式调用的函数中,您可以调用 holidayService.isHoliday(date) 来判断日期是否为假日。如果是假期,那么您可以跳过 运行 报告。
当我不得不安排倒数第三个工作日时,我遇到了类似的问题,经过一些研究后证明这是正确的字符串:
0 45 20 L-3W * ? *
"L-3W"表示"third before last weekday (MON-FRI)"
In this article 解释了如何在特定日历日从 运行ning 中排除 Quartz,但我需要的是不同的东西,我需要 运行 之前的工作或下一个工作日(如果触发日历结果为假期)。
例如,假设工作计划每月 运行,包括 2019 年 3 月 29 日星期五,这是一个假期。
这意味着:
- 非假期:2019 年 3 月 28 日,星期四(当工作应该 运行 如果它 运行s 在假期之前)
- 假期:2019 年 3 月 29 日,星期五
- 假期:2019 年 3 月 30 日,星期六
- 假期:2019 年 3 月 31 日,星期日
- 非节假日:2019 年 4 月 1 日,星期一(当工作 运行 如果它 运行s 在 假期之后)
一种方法是每天运行作业,分析当天是否应该运行,必要时重新触发,但有没有更好的方法?
更新
如果我必须每天触发作业,为什么不使用 Java EE 8 TimerService?
我建议在每个工作日 运行 使用 Cron Expression 例如(运行 每个工作日下午 5 点)
0 00 17 * * MON-FRI
and 在由 Cron 表达式调用的函数中,您可以调用 holidayService.isHoliday(date) 来判断日期是否为假日。如果是假期,那么您可以跳过 运行 报告。
当我不得不安排倒数第三个工作日时,我遇到了类似的问题,经过一些研究后证明这是正确的字符串:
0 45 20 L-3W * ? *
"L-3W"表示"third before last weekday (MON-FRI)"