如何在每月的第十个工作日编写cron表达式?

时间:2019-01-25 09:37:17

标签: cron

我是CRON Expression领域的新手。我想为当月的第十个工作日(工作日)写一个。

我已经尝试过this网站,以帮助我解决这些表达式。对此无能为力。

3 个答案:

答案 0 :(得分:2)

+---------------- minute (0 - 59)
|  +------------- hour (0 - 23)
|  |  +---------- day of month (1 - 31)
|  |  |  +------- month (1 - 12)
|  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
|  |  |  |  |
*  *  *  *  *  command to be executed

这是矩阵。对于工作日的使用(可能不包括假期等,您需要重写这几天的脚本)

答案 1 :(得分:2)

您可以创建每天运行的CRON作业。然后,您可以将功能嵌套在if子句中,例如:

if (isTenthWeekday()) {
    //your functionality
}

private boolean isTenthWeekday() {
    Calendar c = Calendar.getInstance();
    int sumWeekdays = 0;
    for (int i=1; i<=c.get(Calendar.DAY_OF_MONTH); i++) {
        Calendar d = Calendar.getInstance();
        d.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i);
        if (d.get(Calendar.DAY_OF_WEEK) > 1 && d.get(Calendar.DAY_OF_WEEK) <= 6) {
            sumWeekdays++;
        }
    }
    return sumWeekdays == 10;
}

答案 2 :(得分:0)

尝试使用下面的cron表达式,它将在每月的第10天执行。如果是工作日,则只有cron才能正常工作(我假设为MON-FRI)作为工作日。请尝试寻求进一步的帮助

@Scheduled(cron = "0 0 12 10 1-5 ?")
public void scheduletask() {
    // ...
}

thnkx。