我是CRON Expression领域的新手。我想为当月的第十个工作日(工作日)写一个。
我已经尝试过this网站,以帮助我解决这些表达式。对此无能为力。
答案 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。