簡體   English   中英

如何在每個月的每個工作日運行石英作業

[英]How to run quartz job for every working days of month

我需要運行一份需要在每個月的第一個工作日運行的工作,我還需要刪除假期並獲得每個月的第一個工作日。

FE:5 月 1 日是假期,因此作業需要在 5 月 2 日運行。

對於我使用以下代碼的其他工作。

 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 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 ) 開始。

通過 cron 表達式實現該要求可能太復雜了。 我會使用周一到周五運行的 cron 表達式,例如

0 3 45 * * MON-FRI

並通過驗證日期列表來檢查當前日期是否是工作中的假期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM