常用表达式参考
* * * * *每分钟0 * * * *每小时整点0 0 * * *每天 0 点0 0 * * 0每周日 0 点0 0 1 * *每月 1 号 0 点*/5 * * * *每 5 分钟0 9-17 * * 1-5工作日朝九晚五0 0 1 1 *每年 1 月 1 日Cron 表达式详解
字段结构
Cron 表达式由空格分隔的 5 或 6 个字段组成,每个字段代表一个时间单位:
| 分钟 | 小时 | 日 | 月 | 星期 |
|---|---|---|---|---|
0-59 | 0-23 | 1-31 | 1-12 | 0-7(0/7=周日) |
6 段模式最前面多了秒字段,常用于 Quartz Scheduler;标准 Unix cron 为 5 段。
特殊字符
| 字符 | 含义 | 示例 | 说明 |
|---|---|---|---|
* | 任意值 | * * * * * | 每分钟执行 |
, | 列举 | 0 9,12,18 * * * | 9 点、12 点、18 点整点 |
- | 范围 | 0 9-17 * * 1-5 | 工作日 9 点到 17 点 |
/ | 步长 | */5 * * * * | 每 5 分钟 |
? | 不指定 | 0 0 15 * ? | 每月 15 号(忽略星期) |
L | 最后 | 0 0 L * ? | 每月最后一天 0 点 |
W | 最近工作日 | 0 0 15W * ? | 15 号最近的工作日 |
# | 第 N 个 | 0 0 ? * 2#3 | 每月第 3 个周一 |
日 与 星期 的关系
当"日"和"星期"两个字段都设置了具体值时,任一匹配即触发(OR 关系)。
* * *两个都是任意 → 每天都触发- 只想按日期触发,用
?忽略星期:0 0 15 * ?(每月 15 号) - 只想按星期触发,用
?忽略日期:0 0 ? * 1(每周一) - Quartz 中
?表示"不指定";标准 Unix cron 不支持?,写*即可
常见场景速查
| 场景 | 5 段表达式 |
|---|---|
| 每分钟 | * * * * * |
| 每 5 分钟 | */5 * * * * |
| 每小时整点 | 0 * * * * |
| 每天 0 点 | 0 0 * * * |
| 每天 8:30 | 30 8 * * * |
| 工作日 9:00–17:00 每小时 | 0 9-17 * * 1-5 |
| 每周一 0 点 | 0 0 * * 1 |
| 每月 1 号 0 点 | 0 0 1 * * |
| 每月最后一天 | 0 0 L * * |
| 每年 1 月 1 日 | 0 0 1 1 * |
| 每 30 分钟(工作时间) | */30 9-18 * * 1-5 |
| 每 2 小时 | 0 */2 * * * |