Cron表达式解析

把一段 5 字段 Cron 表达式粘进来,立刻得到每个字段的中文含义与合法性判断,并用固定的参考时间向前模拟,列出未来 5 次运行时刻。默认示例是「0 9 * * 1」(每周一 9:00),参考时间已硬编码为 2026-01-01 00:00,打开即可看到结果。

支持 *、*/n、a-b、a-b/n、列表 a,b,c 与单值;字段顺序为 分 时 日 月 周
该值为页面内置默认值,保证示例可复现;可改成你自己的时间

提示:两个输入框都可裸按 Enter 触发解析;结果区用 role="alert" 标出,便于读屏软件播报。

五段字段的取值范围与特殊写法对照

字段位置含义合法范围常见写法
第 1 段分钟0–59* 每分;*/15 每 15 分;0-30 前半小时
第 2 段小时0–239 第 9 时;9-17 工作时段
第 3 段日(每月几号)1–31* 每天;1,15 每月 1 与 15 号
第 4 段月1–12* 每月;1-6 上半年
第 5 段周(星期几)0–7(0 与 7 均为周日)1 周一;1-5 工作日

该对照表说明每段字段的取值范围与可写语法;具体某条表达式是否合法、未来何时运行,请以结果区为准。

使用方法

  1. 在「Cron 表达式」框填入 5 段式定时规则(默认 0 9 * * 1),段间用空格分隔,顺序为 分、时、日、月、周。
  2. 在「参考起始时间」选一个起点(默认 2026-01-01T00:00),页面会用它向前逐分钟模拟,收集最早 5 个命中时刻。
  3. 点「解析表达式」或裸按 Enter,结果区先给出每段的逐字段中文含义与「合法 / 非法」判定,再列出未来 5 次运行。
  4. 若某段超出范围、出现非数字,或字段数不是 5,结果区会改为在错误条里给出具体到哪一段、为什么不合法。
  5. 点「复制结果」把整段解析结论存到剪贴板,方便贴进文档或工单。

这个工具能解决什么问题

一是把「天书一样的 Cron」翻译成人话。Cron表达式解析工具帮运维和开发把别人写的 0 9 * * 1、*/15 * * * * 一眼看不出是「每周一 9 点」还是「每 15 分钟一次」的表达式展开成中文,避免误判导致任务在错误时间触发。

二是提前发现非法表达式。一个 0 60 * * *(分钟 60)、* * * *(只有 4 段)在多数调度器里会直接报错或静默不跑。本工具在解析阶段就逐段校验取值区间,并指出是第几段越界,省去你在服务器上反复试错。

三是用固定参考时间给出可复现的「下一次」。很多在线解析器依赖「当前时间」,结果随时在变、无法写入文档。本工具把参考时间硬编码为 2026-01-01 00:00,示例永远输出同一组未来时刻,适合做教程、测试用例与 PR 说明。

本页不做这些事:不解析 6 段(含秒)或含宏(@daily)的非标准 Cron;不支持月份/星期用 JAN、MON 等英文别名;也不连接任何真实调度器去真正下发任务。它只解析、校验并模拟展示。

计算原理:五段字段的语法与匹配语义

字段顺序与范围:标准 Vixie Cron 为 5 段——分(0–59) 时(0–23) 日(1–31) 月(1–12) 周(0–7)。第 5 段中 0 与 7 都表示周日,本工具两者都接受,匹配时统一归一为 0(JS 的 getDay() 返回 0–6)。

单段语法:* 表示该段所有合法值;*/n 表示步长 n(如 */15 取 0,15,30,45);a-b 表示闭区间;a-b/n 表示区间内每 n 取一个;a,b,c 为列表求并集;单值 a 只取该数。解析时对每段先按逗号拆列表,再对每部分处理区间与步长,最后合并成允许值集合并校验是否越界。

日与周的 OR 语义:当「日」和「周」两段同时被限制(都不是 *)时,约定为「或」——命中任意一段即触发;其中一段为 * 时只看另一段;两段都是 * 则每天匹配。本工具据此判断某分钟是否命中。

未来时刻模拟:从参考时间起,逐分钟把日期代入「分、时、月」硬约束与「日/周」OR 约束,命中即记录,直到收集满 5 个或模拟满 5 年(约 263 万分钟)为止。5 年内无命中则提示「未来 5 年内无匹配」。逐分钟而非跳步是为保证不漏掉任何合法点。

完整示例(默认输入实测)

示例与页面默认值完全一致:表达式 0 9 * * 1,参考时间 2026-01-01 00:00(星期四)。逐项核对:

这组数字与结果区、上方默认输出完全一致;把表达式改成 */15 * * * *,未来 5 次会变成 00:00、00:15、00:30、00:45、01:00,可在结果区验证。

输入范围与对照表

对照表是「语法速查」,结果区是「针对你输入的实算」;两者结合既能学规则,也能验对错。

结果边界与舍入

常见问题

为什么提示「字段数错误」?

标准 Cron 必须是 5 段(分 时 日 月 周)。若你只写了 4 段(常见于漏掉周字段)或写了 6 段(含秒),页面会判定字段数不对并期待 5 段。请补齐或删减到正好 5 段再用。

分填 60、月填 13 为什么会报错?

因为各段有明确范围:分 0–59、月 1–12。60 分、13 月都超出边界,页面会明确指出是「第 1 段(分钟)」或「第 4 段(月)」越界,而不是笼统地说不合法,方便你定位修改。

「日」和「周」都写了具体值会怎样?

按 Vixie Cron 的「或」语义:两段同时限制时,命中任意一段即触发。例如「日=1,15 且 周=1」会在每月 1 号、15 号,以及每个周一都跑(三者的并集)。若你本意是「每月 1 号且是周一」,这种表达式表达不了,需要拆成两条。

0 和 7 都是周日吗?

是的。Cron 第 5 段里 0 与 7 都代表星期日。本工具两者都接受,并在描述中注明;匹配阶段统一把 7 归一为 0,保证不漏掉周日的命中。

未来运行时间为什么和别家工具对不上?

多数在线工具用「当前真实时间」做起点,所以结果随时变化;本工具固定用你填的「参考起始时间」(默认 2026-01-01 00:00)逐分钟模拟,结果可复现、可写进文档。把参考时间改成「现在」再解析,就能和依赖当前时间的工具对齐。

支持 @daily、JAN、MON 这类写法吗?

不支持。本工具只解析纯数字 5 段式,支持 *、*/n、a-b、a-b/n、列表与单值。宏(@daily)和英文月份/星期别名需要先在别处展开成数字再贴进来。

为什么模拟要逐分钟而不是跳着算?

为了不漏掉任何合法点。虽然可以针对「分、时」做跳步优化,但日/周的 OR 组合在月末、闰年等边界上不规整,逐分钟推进最稳妥,5 年窗口约 263 万次判断,浏览器瞬间完成。

解析结果会被上传吗?

不会。所有解析与模拟都在你当前浏览器里完成,页面不发起任何网络请求,也不写 Cookie 或 localStorage。你在开发者工具的 Network 面板里点几次「解析表达式」,面板始终是空的。

相关工具