@Scheduled如何配置单行Cron表达式实现每月第一、第三个周日触发任务
单行Cron实现每月第一、第三个周日触发方案
该需求完全可以通过单行Cron表达式实现,无需拆分多个定时任务配置。
你之前使用的0 0 10 1-7 * SUN逻辑为匹配每月1-7日范围内的周日,恰好对应每月第一个周日。要新增第三个周日的触发规则,只需在日期字段追加第三个周日固定所属的15-21日区间即可,最终表达式如下:0 0 10 1-7,15-21 * SUN
规则说明
- Cron的日期字段支持逗号分隔多个独立区间,
1-7,15-21表示同时匹配每月1-7号、15-21号两个时间段 - 结合周字段的
SUN限定,只会触发两个时间段内的周日,正好对应每月第一个周日(1-7号区间内的周日)和第三个周日(15-21号区间内的周日) - 该表达式完全兼容Spring
@Scheduled注解的Cron解析规则,直接替换原有表达式即可生效
拓展参考
如果后续需要调整为其他周次的周日触发,可按对应日期区间配置:
- 第二个周日:对应8-14号区间
- 第四个周日:对应22-28号区间
内容的提问来源于stack exchange,提问作者sonic boom
相关产品推荐
相关产品推荐

