Cron 表达式

常用表达式参考
* * * * *每分钟
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-590-231-311-120-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:3030 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 * * *