Cron 表达式解析器 — 校验、解释和预览执行计划
输入标准五字段 Cron 表达式,即刻查看可读的中文说明、字段分解和接下来的 UTC 执行时间。
表达式有效
Runs at 09:00 on Monday through Friday.
分钟
0
0
小时
9
9
日
*
1, 2, 3, 4, 5... (31 values)
月
*
1, 2, 3, 4, 5... (12 values)
星期
1-5
1, 2, 3, 4, 5
什么是 Cron 表达式?
Cron 是类 Unix 系统中的定时任务调度器。Cron 表达式通过五个字段定义任务何时运行:分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)和星期几(0-7,0 和 7 都表示周日)。
每个字段可以是具体值(5)、范围(9-17)、列表(1,3,5)、步进(*/15)或通配符(*)。组合使用可以表达几乎任何循环计划——从"每分钟"到"每季度第一个周一上午 9 点"。
语法强大但容易误读。"0 */2 * * *" 是每 2 小时运行,不是每 2 分钟。"0 9 * * 1-5" 是工作日 9 点运行,但 "* 9 * * 1-5" 是工作日 9 点钟那一小时内每分钟运行一次(60 次!)。本解析器帮你精确理解表达式含义。
使用方法
- 在输入框中输入或粘贴五字段 Cron 表达式。
- 或点击预设按钮快速填入常用计划(每小时、工作日 9 点等)。
- 阅读中文说明确认是否符合预期。
- 查看字段分解了解每个字段展开后的具体值。
- 检查接下来 5 次执行时间,验证计划是否正确。
使用场景
编写 crontab 条目
在添加计划到 crontab 或 CI 配置前,先粘贴到这里确认是否如你所想。避免部署后才发现任务运行频率比预期高 60 倍。
调试定时任务
任务未按预期运行?粘贴 Cron 表达式,对照服务器使用的时区检查下次执行时间。问题通常出在 UTC 与本地时间的混淆上。
文档化团队计划
在 PR 或 wiki 中分享 Cron 表达式?附上可读说明,让审阅者不必在脑中解码 "0 */4 * * 1-5"。
学习 Cron 语法
尝试不同表达式并立即看到结果。比读 man 手册更适合学习步进和范围语法。
使用建议
始终确认时区
本工具以 UTC 显示执行时间。如果服务器运行在其他时区,请相应换算。许多生产 bug 源于 Cron 计划的时区混淆。
优先使用明确时间而非短间隔
"*/5 * * * *"(每 5 分钟)适合健康检查,但业务逻辑建议用具体时间如 "0 9,17 * * *"(9 点和 17 点)。更易理解,也不容易造成负载尖峰。
测试月末边界情况
"0 0 31 * *" 仅在有 31 天的月份运行。如果需要"每月最后一天",需要其他方案。
为表达式添加注释
在代码中始终添加注释说明计划含义。6 个月后的维护者(包括你自己)会感激的。
示例
工作日上午 9 点
经典的工作时间计划。
Input
0 9 * * 1-5Output
在周一到周五的 09:00 运行。每 15 分钟
常用于监控和健康检查。
Input
*/15 * * * *Output
每天每 15 分钟运行一次。功能特点
- 即时校验并显示清晰错误信息
- 可读的中文执行计划说明
- 逐字段分解,展示展开后的值
- UTC 时间显示接下来 5 次执行时间
- 常用预设按钮快速输入
- 无服务器调用——完全浏览器端运行
常见问题
支持 6 字段或 7 字段 Cron 表达式吗?
不支持。本工具支持标准 5 字段格式(分钟、小时、日、月、星期)。Quartz 等系统添加的秒字段或年字段不受支持。
为什么执行时间用 UTC?
UTC 无歧义且避免夏令时混淆。大多数服务端 Cron 系统以 UTC 运行。如果你的系统用本地时间,请手动换算。
能用 MON-FRI 这样的名称吗?
本解析器不支持。请使用数字值:1-5 表示周一到周五。某些 Cron 实现支持三字母名称,但可移植标准仅使用数字。
0 和 7 都表示周日是什么意思?
这是历史遗留问题。不同 Unix 系统使用不同约定(0=周日 vs 7=周日)。现代 Cron 两者都接受。本解析器在内部将 7 统一为 0。
能计算多远的执行时间?
最远约 5 年。如果表达式很稀疏(如 "0 0 29 2 *" 仅在 2 月 29 日运行),可能无法在此窗口内找到 5 个结果。