Spring 特定时间每 15 分钟一次的 Cron 表达式,而不是 运行 天

Spring Cron expression every 15 mins for particular hours and not running on days

我想 运行 在每天晚上 10 点到早上 6 点 运行 的固定时间表中每隔 15 分钟执行一些代码,而不是每个月的 3 号和 25 号 运行

这是我的

@Scheduled(cron = "0 0/15 0-6,22-24 * * *")
public void runJob() {
    // ...
}

0/15 - for every mins

0-6, 22-24 - assuming this runs every day from midnight to 6 am and then again from 10 pm to midnight (Is it correct)

我唯一想不通的是我怎么能说这不会 运行 在某些日期,例如每个月的 3 日和 25 日。

我是否应该在日期字段中输入 1,3-23,26-31 之类的内容,所以它是这样的

0 0/15 0-6,22-24 1,4-23,26-31 * *

在如此复杂的场景中,您可以分析性地声明您想要什么。以下应该有效。

@Scheduled(cron = "0 0/15 0,1,2,3,4,5,6,22,23 1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31 * ? *")

或者你可以稍微总结一下

@Scheduled(cron = "0 0/15 0-6,22-23 1,2,4-24,26-31 * ? *")

小时 24 表示为 0