跳到正文
CronExplain

Cron 语法速查表

一页看懂常见方言的 Cron 语法:有哪些字段、各自接受什么值,以及每个特殊字符的作用。所有示例都可以在解析器中试用。

字段与取值范围

字段取值说明
秒0–59仅 Quartz、Spring 和 6 字段 Cron
分钟0–59crontab 和 AWS 中的第一个字段
小时0–2324 小时制
日1–31Quartz、Spring、AWS 支持 L、W 和 LW
月1–12 或 JAN–DEC英文缩写不区分大小写
星期0–7 或 SUN–SATQuartz 和 AWS:1–7,1 = 星期日
年1970–2199Quartz 中可选,AWS 中必填

特殊字符

符号含义示例
*任意值* * * * * — 每分钟
,值列表0 9,17 * * * — 09:00 和 17:00
-范围0 9 * * 1-5 — 工作日 09:00
/步长*/15 * * * * — 每 15 分钟
?不指定值(日期字段)0 0 12 ? * MON — Quartz
L最后一天 / 最后一个星期几0 0 0 L * ? — 每月最后一天
W最近的工作日0 0 9 15W * ? — 离 15 日最近的工作日
#当月第 n 个星期几0 0 9 ? * 2#1 — 第一个星期一

宏

宏标准 crontab
@yearly / @annually0 0 1 1 *
@monthly0 0 1 * *
@weekly0 0 * * 0
@daily / @midnight0 0 * * *
@hourly0 * * * *

阅读顺序

从最小的时间单位读到最大的:30 2 * * 1 表示在任意日、任意月、且星期为一时的 2 点 30 分——也就是每周一 02:30。Quartz 和 Spring 要在前面加上秒字段,AWS 要在最后加上年字段。

常见陷阱

分钟字段中的 */7 并不是“永远每 7 分钟一次”:它在每个小时重新开始,所以会在 0、7……56 分触发,然后又回到 0 分。在 crontab 中同时限定两个日期字段时,只要其一匹配就会运行。而在 Quartz 和 AWS 中,星期字段的 0 是无效值,因为一周从 1 开始。

常见问题

Cron 字段的顺序是什么?
分钟、小时、日、月、星期。Quartz 和 Spring 在前面加秒,AWS 在最后加年。
Cron 中的问号是什么意思?
表示“不指定值”。Quartz 和 AWS 要求在两个日期字段之一使用它;标准 crontab 不接受问号。
如何写“每 90 分钟一次”?
如果间隔不能整除小时或天,一行 Cron 无法表达。可以用两条,例如 0 0-21/3 * * * 和 30 1-22/3 * * *。
月份和星期的英文缩写区分大小写吗?
不区分。在本站涵盖的所有方言中,JAN、Jan 和 jan 都是等价的。