我需要执行一项工作,该工作需要每个月的第一个工作日,也需要删除假期并获得每个月的第一个工作日。
FE:5月1日是假期,因此工作需要在5月第二天进行。
我在下面的代码中使用的其他工作。
public CronTriggerFactoryBean testBean() {
CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
bean.setJobDetail(test().getObject());
bean.setName("test");
bean.setGroup("test");
bean.setCronExpression("0 45 3 ? * *");
return bean;
}
有什么办法可以解决这个问题?
答案 0 :(得分:2)
CRON可能并且永远不会支持任何机制来识别当前位置或给定位置的假期。假期在国家之间不一致,有时甚至在各省(通常是地理上较大的国家)之间也是如此。
对于诸如CRON is这样的易于使用的指定表达式,此功能将非常复杂。
无论假期如何,星期一至星期五(2-6
)每天都可以触发的唯一操作。如果2-6
或MON-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
免责声明:该周从星期日(1
)开始。
答案 1 :(得分:1)
通过cron表达式实现该要求可能会太复杂。 我会采用从周一到周五运行的cron表达式。 g。
0 3 45 * * MON-FRI
,然后通过检查日期列表来检查当前日期是否是工作中的假期。