Quartz Cron 表达式参考手册
目录
基础语法
Quartz Cron表达式由6个字段组成(从左到右):
秒 分钟 小时 日期 月份 星期
* * * * * *
字段范围
| 字段 | 允许值 | 允许的特殊字符 |
|---|---|---|
| 秒 | 0-59 | , - * / |
| 分钟 | 0-59 | , - * / |
| 小时 | 0-23 | , - * / |
| 日期 | 1-31 | , - * ? / L W C |
| 月份 | 1-12 或 JAN-DEC | , - * / |
| 星期 | 1-7 或 SUN-SAT | , - * ? / L C # |
字段说明
时间字段
- 秒:0-59,支持精确到秒的控制
- 分钟:0-59,一小时内的分钟数
- 小时:0-23,24小时制
- 日期:1-31,月份中的第几天
- 月份:1-12,一年中的第几个月
- 星期:1-7,星期几(1=周日,7=周六)
月份名称缩写
JAN=1, FEB=2, MAR=3, APR=4, MAY=5, JUN=6
JUL=7, AUG=8, SEP=9, OCT=10, NOV=11, DEC=12
星期名称缩写
SUN=1, MON=2, TUE=3, WED=4, THU=5, FRI=6, SAT=7
特殊字符说明
* 通配符
表示该字段的所有可能值
# 每秒执行
* * * * * *
# 每分钟执行
0 * * * * *
? 不指定值
只能用于日期和星期字段,表示不关心该字段的值
# 每天执行(不关心星期几)
0 0 12 * * ?
# 每周一执行(不关心日期)
0 0 12 ? * MON
- 范围
表示一个范围
# 工作日9-17点每小时执行
0 0 9-17 * * MON-FRI
# 每年1-6月执行
0 0 12 1 1-6 ?
, 列举
表示列举多个值
# 每天8点、12点、18点执行
0 0 8,12,18 * * ?
# 周一、周三、周五执行
0 0 12 ? * MON,WED,FRI
/ 增量
表示起始值/增量
# 从0秒开始,每5秒执行一次
0/5 * * * * ?
# 从第1分钟开始,每2分钟执行一次
0 1/2 * * * ?
L 最后
用于日期和星期字段
# 每月最后一天
0 0 12 L * ?
# 每月最后一个周五
0 0 12 ? * FRIL
W 工作日
最接近指定日期的工作日
# 每月15号最近的工作日
0 0 12 15W * ?
# 第几个
用于星期字段,表示第几个星期几
# 每月第2个周一
0 0 12 ? * MON#2
# 每月第3个周五
0 0 12 ? * FRI#3
常用时间表达式
基础时间间隔
每秒执行
* * * * * *
每分钟执行
0 * * * * *
每小时执行
0 0 * * * *
每天执行
# 每天凌晨12点
0 0 0 * * ?
# 每天早上6点
0 0 6 * * ?
# 每天中午12点
0 0 12 * * ?
# 每天晚上11点30分
0 30 23 * * ?
每周执行
# 每周一早上9点
0 0 9 ? * MON
# 每周五下午5点
0 0 17 ? * FRI
# 每周日晚上8点
0 0 20 ? * SUN
每月执行
# 每月1号早上8点
0 0 8 1 * ?
# 每月15号中午12点
0 0 12 15 * ?
# 每月最后一天晚上11点
0 0 23 L * ?
每年执行
# 每年1月1日凌晨
0 0 0 1 1 ?
# 每年12月25日上午10点
0 0 10 25 12 ?
固定间隔执行
秒级间隔
# 每5秒执行一次
0/5 * * * * ?
# 每10秒执行一次
0/10 * * * * ?
# 每30秒执行一次
0/30 * * * * ?
分钟级间隔
# 每2分钟执行一次
0 0/2 * * * ?
# 每5分钟执行一次
0 0/5 * * * ?
# 每15分钟执行一次
0 0/15 * * * ?
# 每30分钟执行一次
0 0/30 * * * ?
小时级间隔
# 每2小时执行一次
0 0 0/2 * * ?
# 每3小时执行一次
0 0 0/3 * * ?
# 每6小时执行一次
0 0 0/6 * * ?
# 每12小时执行一次
0 0 0/12 * * ?
业务场景案例
系统维护
数据库备份
# 每天凌晨2点备份数据库
0 0 2 * * ?
# 每周日凌晨3点全量备份
0 0 3 ? * SUN
# 每月1号凌晨1点备份
0 0 1 1 * ?
日志清理
# 每天凌晨4点清理日志
0 0 4 * * ?
# 每周六凌晨5点清理临时文件
0 0 5 ? * SAT
系统重启
# 每周日凌晨6点重启服务
0 0 6 ? * SUN
# 每月第一个周日凌晨4点重启
0 0 4 ? * SUN#1
业务流程
报表生成
# 每天早上8点生成日报
0 0 8 * * ?
# 每周一早上9点生成周报
0 0 9 ? * MON
# 每月1号早上10点生成月报
0 0 10 1 * ?
# 每季度第一天生成季报
0 0 10 1 1,4,7,10 ?
邮件发送
# 每天早上9点发送日报邮件
0 0 9 * * ?
# 每周五下午5点发送周报邮件
0 0 17 ? * FRI
# 每月最后一天发送月报邮件
0 0 18 L * ?
数据同步
# 每小时同步一次数据
0 0 * * * ?
# 每30分钟增量同步
0 0/30 * * * ?
# 每天凌晨1点全量同步
0 0 1 * * ?
监控告警
健康检查
# 每分钟检查系统状态
0 * * * * ?
# 每5分钟检查数据库连接
0 0/5 * * * ?
# 每15分钟检查服务可用性
0 0/15 * * * ?
性能监控
# 每10分钟收集性能指标
0 0/10 * * * ?
# 每小时生成性能报告
0 0 * * * ?
电商业务
订单处理
# 每10分钟处理待付款订单
0 0/10 * * * ?
# 每小时检查超时订单
0 0 * * * ?
# 每天凌晨处理退款
0 0 1 * * ?
库存管理
# 每30分钟同步库存
0 0/30 * * * ?
# 每天早上8点更新商品价格
0 0 8 * * ?
促销活动
# 每天0点开始秒杀活动
0 0 0 * * ?
# 每周五晚上8点开始周末促销
0 0 20 ? * FRI
# 双11当天特殊活动
0 0 0 11 11 ?
复杂表达式示例
工作时间相关
工作日执行
# 工作日早上9点到下午5点,每小时执行
0 0 9-17 * * MON-FRI
# 工作日每30分钟执行(9:00-18:00)
0 0/30 9-18 * * MON-FRI
# 工作日午休时间不执行(9-12点,14-18点)
0 0 9-12,14-18 * * MON-FRI
非工作时间执行
# 每天晚上6点后和早上9点前每小时执行
0 0 0-8,18-23 * * ?
# 周末每2小时执行
0 0 0/2 ? * SAT,SUN
特定日期处理
月末处理
# 每月最后一天晚上11点
0 0 23 L * ?
# 每月最后一个工作日下午5点
0 0 17 LW * ?
# 每月倒数第3天
0 0 12 L-3 * ?
特殊日期
# 每月第2个周一
0 0 9 ? * MON#2
# 每月第3个周五
0 0 15 ? * FRI#3
# 每月最后一个周五
0 0 17 ? * FRIL
季度处理
# 每季度第一天(1月、4月、7月、10月的1号)
0 0 8 1 1,4,7,10 ?
# 每季度最后一天
0 0 18 L 3,6,9,12 ?
条件组合
多时间点
# 每天早中晚三次执行
0 0 8,12,18 * * ?
# 工作日多个时间点执行
0 0 9,11,14,16,18 * * MON-FRI
# 周末不同时间执行
0 0 10,15,20 ? * SAT,SUN
复杂时间间隔
# 工作日每15分钟,周末每30分钟
0 0/15 9-18 * * MON-FRI
0 0/30 10-22 ? * SAT,SUN
# 白天每10分钟,夜间每小时
0 0/10 8-22 * * ?
0 0 23-7 * * ?
注意事项
1. 字段冲突
- 日期和星期字段不能同时指定具体值
- 必须有一个使用
?通配符
# ❌ 错误:同时指定了日期和星期
0 0 12 15 * MON
# ✅ 正确:使用?通配符
0 0 12 15 * ? # 每月15号
0 0 12 ? * MON # 每周一
2. 时区考虑
- Cron表达式基于服务器时区
- 跨时区部署需要特别注意
- 夏令时可能影响执行时间
3. 性能考虑
- 避免过于频繁的执行(如每秒执行)
- 考虑任务执行时间,避免重叠
- 合理分散高峰时间的任务
4. 测试建议
- 使用在线工具验证表达式
- 在测试环境充分验证
- 考虑边界情况(月末、年末等)
在线工具
Cron表达式生成器
表达式验证工具
常见问题 FAQ
Q: 为什么我的任务没有按预期执行?
A: 检查以下几点:
- 确认服务器时区设置
- 验证Cron表达式语法
- 检查任务是否被阻塞
- 确认调度器是否正常运行
Q: 如何处理跨月份的特殊情况?
A: 使用L、W等特殊字符:
# 每月最后一天
0 0 12 L * ?
# 每月最后一个工作日
0 0 12 LW * ?
Q: 能否在一个表达式中同时指定多个复杂条件?
A: 不建议在单个表达式中使用过于复杂的逻辑,建议:
- 拆分为多个简单的Cron表达式
- 在业务逻辑中处理复杂条件
- 使用编程方式动态调度
本文来自博客园,作者:knqiufan,转载请注明原文链接:https://www.cnblogs.com/knqiufan/p/18952882

浙公网安备 33010602011771号