Cron 表达式解析器

解析 Cron 表达式:逐字段列出匹配值、给出英文说明、验证语法,并预览接下来 10 次执行时间。免费在线工具。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
按顺序输入五个字段:分钟、小时、日、月、星期。不支持秒字段和 @ 快捷写法。页面打开时已解析 0 9 * * 1-5。
点击「解析」或在输入框按 Enter 应用表达式,Ctrl+Enter(Mac 为 ⌘+Enter)也可解析。只编辑输入不会更新结果。焦点在工具内时,Ctrl+L(⌘+L)清空输入、结果和状态。
分钟小时日月星期
预设:
展开「预设」并选择八种计划之一。每个预设都会替换表达式并立即解析。

解析 Cron 表达式后,这里显示英文说明、字段值和下次执行时间。

英文说明 所有语言版本都生成英文说明句;字段值中的月份和星期名称也保留英文。
字段值 逐字段显示表达式及前 12 个匹配值,更多值以省略号表示。月份和星期数字使用英文名称;星期 7 在此处仍显示为 7。
执行时间 列表从当前分钟之后开始,按浏览器本地时区显示接下来 10 次执行时间。请与实际调度器的时区核对。没有时区选择器或查看更多选项。
阅读完整使用指南 Cron 表达式完全指南:语法、示例与在线解析
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

从腾讯云定时触发器复制过来的表达式

腾讯云云函数「定时触发器说明」规定 Cron 表达式有七个字段,依次是秒、分钟、小时、日、月、星期、年,文档中「周一到周五每天上午 10:15」的例子是 0 15 10 ? * MON-FRI *。把它原样粘到本工具,状态栏会显示:

无效:需要 5 个字段,当前 7 个。

本工具只认标准的五个字段。去掉开头的秒 0 和末尾的年 *,再把 ? 换成 *,就得到 15 10 * * MON-FRI。星期名称不区分大小写,MON-FRI 与 1-5 等价。下面是浏览器时区为 Asia/Shanghai、从 2026-10-08(周四)08:00 起算时工具给出的英文说明和前三次执行时间:

At 10:15, on mon, tue, wed, thu, fri
2026-10-08 10:15
2026-10-09 10:15
2026-10-12 10:15

说明句只有英文,所有语言版本都一样,这里照原样引用。页面上的执行时间按浏览器的语言设置显示日期格式,上面统一写成「年-月-日 时:分」。工具没有时区选项,执行时间总是按浏览器所在时区计算。腾讯云这份文档没有写明触发器按哪个时区执行,核对时请以控制台显示为准。

日期和星期同时写具体值会怎样

腾讯云文档的注意事项写道,「日」和「星期」同时指定具体值时两者为「或」关系;标准 cron 也是这样(cronie crontab(5)、POSIX crontab),符合任一个的日子都会执行。这条规则最容易在「每月第三个星期二」这类需求上出错。腾讯云可以写 0 0 0 ? * 2#3 *,标准 cron 没有 #,换成五字段后本工具会报错:

不支持:星期字段中的「2#3」。本工具只解析标准 5 字段 cron;#、L、W、? 是 Quartz 等调度器的扩展语法。

容易想到的写法是「15 日到 21 日之间的星期二」,也就是 0 0 15-21 * 2。按「或」规则,它实际在每月 15–21 日的每一天和每个星期二都执行。同样从 2026-10-08 08:00(Asia/Shanghai)算起,前六次是:

At midnight, on day 15 through 21 of the month or on tue
2026-10-13 00:00
2026-10-15 00:00
2026-10-16 00:00
2026-10-17 00:00
2026-10-18 00:00
2026-10-19 00:00

10 月 13 日是第二个星期二,第三个星期二是 20 日,所以这种写法会多跑很多次。在标准 cron 里,可以只写 0 0 15-21 * *,再让脚本自己判断当天是不是星期二。只要两个字段里有一个以 * 开头(包括 */2),两者就必须同时符合,这与 cronie 一致,所以 0 0 */2 * 1 只在日期为奇数的周一执行。月份字段始终必须符合。

不支持的语法

#(第几个星期几)、L(最后)、W(最近的工作日)和 ? 来自 Quartz 等调度器,标准 cron 不接受。工具不会猜测它们的含义,而是报错并指出是哪个字段的哪一段。1.5、monday 这类既不是整数也不是英文缩写的值同样报错,中文星期名也不认。步长只能跟在 * 或范围后面:cronie 不接受 5/10,本工具同样报错,请写成 5-59/10 或 */10。

日期与月份的组合在日历上不存在时,每个字段本身都合法,工具不报语法错误,而是说找不到执行时间。例如「每个小月的 31 日」:4、6、9、11 月都只有 30 天。

At midnight, on day 31 of the month, in apr, jun, sep, nov
找不到执行时间:没有真实日期符合这些字段(例如 2 月 30 日)。

Cron 字段参考

字段允许值特殊字符
分钟0–59* , - /
小时0–23* , - /
日期1–31* , - /
月份1–12 或 jan–dec* , - /
星期0–7(0 和 7 = 星期日)或 sun–sat* , - /

限制

  • 执行时间只按浏览器本地时区计算,没有时区选择器,也不读取 CRON_TZ= 这一行。服务器若按 UTC 运行,北京时间要减 8 小时再写。
  • 夏令时切换时不存在的时刻不会匹配(crontab(5) 的规定);时钟回拨时重复出现的时刻只列一次,cronie 实际会执行两次。
  • 说明句在所有语言版本都是英文;字段名和提示信息已翻译。
  • 不支持 @daily、@reboot 等快捷写法,会提示字段数不对。@daily 请写成 0 0 * * *。
  • 执行时间固定列 10 次,没有「显示更多」或日期选择。

FAQ

什么是 Cron 表达式?

Cron 表达式是一个包含 5 个字段(分钟、小时、日期、月份、星期)的字符串,用于定义周期性计划。cron、crontab、Kubernetes、GitHub Actions 等系统都使用这种写法。

Cron 表达式中 * 是什么意思?

星号(*)表示「该字段的每个有效值」。例如分钟字段中的 * 表示每分钟。写成 */15 是从最小值起每隔 15 取一个值,写成 9-17 是一个范围。

'0 0 * * 0' 和 '0 0 * * 7' 有什么区别?

没有区别,两者都表示每周日 0 点。星期字段中 0 和 7 都代表星期日。

支持秒级或 @reboot 吗?

不支持。本工具只解析标准的 5 字段格式(分 时 日 月 周)。带秒的 6 字段、带年的 7 字段、@reboot 和 @daily 等写法会提示字段数不对;Quartz 风格的 #、L、W、? 会报错并指出是哪个字段的哪一段。

腾讯云、阿里云定时触发器里的表达式能直接粘贴吗?

不能直接粘贴。腾讯云云函数的定时触发器用 7 个字段(秒 分 时 日 月 星期 年),还可以用 ?、L、W、#;阿里云函数计算文档里的例子 0 0 4 * * * 表示每天 4:00(UTC),开头多一个秒字段。粘贴后本工具会提示需要 5 个字段。去掉开头的秒和末尾的年、把 ? 换成 * 之后,再检查日期与星期两个字段是否都写了具体值。

输入的表达式会发送或保存吗?

不会。表达式由页面脚本在浏览器标签页里解析,不会发送到服务器,也不会写入浏览器存储。页面统计只记录使用事件(工具名和「解析」这个动作),不包含表达式内容。