如何 运行 每月每个工作日的石英作业

How to run quartz job for every working days of month

我需要 运行 一份工作,需要 运行 每个月的第一个工作日,我还需要删除假期并获得每个月的第一个工作日。

FE : 五月一日是假期,所以工作需要在五月的第二天 运行。

对于我使用以下代码的其他作业。

 public CronTriggerFactoryBean testBean() {
    CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
    bean.setJobDetail(test().getObject());
    bean.setName("test");
    bean.setGroup("test");
    bean.setCronExpression("0 45 3 ? * *");
    return bean;
}

有什么办法可以解决这个问题吗?

通过 cron 表达式实现该要求可能太复杂了。 我会使用周一到周五运行的 cron 表达式,e。 g.

0 3 45 * * MON-FRI

并通过验证日期列表来检查当前日期是否是工作中的假期。

CRON 不支持也可能永远不会支持任何识别当前或给定位置的假期是否存在的机制。假期在国家之间不一致,有时甚至在省份之间(通常是地理上较大的国家)。

对于像 CRON is 这样易于使用的指定表达式,此功能将非常复杂。

您唯一可以做的事情是从周一到周五 (2-6) 每天触发,不管节假日如何,并在给定的工作中执行一些额外的节假日检查。如果 2-6MON-FRI 表达式不起作用,请使用 2,3,4,5,6.

bean.setCronExpression("0 45 3 ? * 2-6"); 
// At 03:45:00am, every day between Monday and Friday, every month
 

免责声明: CRON 的一周从星期日开始(1)。