如何在前一个或下一个工作日 运行 Quartz Scheduler

How to run a Quartz Scheduler on a previous or next business day

In this article 解释了如何在特定日历日从 运行ning 中排除 Quartz,但我需要的是不同的东西,我需要 运行 之前的工作或下一个工作日(如果触发日历结果为假期)。

例如,假设工作计划每月 运行,包括 2019 年 3 月 29 日星期五,这是一个假期。

这意味着:

一种方法是每天运行作业,分析当天是否应该运行,必要时重新触发,但有没有更好的方法?

更新

如果我必须每天触发作业,为什么不使用 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)"