Cron 表达式解析
按时区与起始时刻预览五字段数字 Cron
支持五字段数字 Cron:*、列表、范围、*/n、a-b/n。日期与星期都有限制时用 OR;含通配符的日期字段用 AND。
—————完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。
工具说明
预览有明确边界的五字段数字 Cron 子集:分钟 0–59、小时 0–23、日期 1–31、月份 1–12、星期 0–7,其中 0 与 7 都表示星期日。支持 *、十进制整数、a-b 范围、逗号列表、*/n 和 a-b/n,步长从范围下限开始。不支持名称、秒字段、宏、5/10 等单值步长、Quartz 运算符或跨界范围。日期和星期都受限制时满足其中一个即可(OR);任一日期字段以 * 开头时,两项都须满足(AND)。选择浏览器支持的时区,可输入带 Z 或 ±HH:mm 的 ISO 时刻作为预览起点。结果最多五次,严格晚于起点且处于之后 365 个经过日内;有效计划也可能在范围内无匹配。时钟跳变中的缺失时间跳过,回拨中的重复时间会列出两个不同 ISO 时刻。实际调度器的夏令时、漏执行补偿及方言规则可能不同。表达式和设置保存在本地,清空可删除草稿。
失败门诊(高频踩坑)
无匹配不等于完整的计划校验
原因:预览范围有限,执行环境也可能采用不同 Cron 方言。
修复:在实际调度器中校验表达式,并测试夏令时与漏执行策略。
步长会在字段内重新开始
原因:分钟 */10 表示每小时的 0、10、20、30、40、50 分,不是任意上次执行后的十分钟。
修复:需要以上次执行为基准的经过时长时,使用间隔调度。
场景配方
验证日期与星期的 OR
目标:发现比每月第一个星期一更宽的计划。
- 输入 0 9 1 * 1,时区 UTC,起点 2026-03-01T00:00:00Z。
- 分析并查看 3 月 1 日、3 月 2 日及之后的星期一。
结果:3 月 1 日和 3 月 2 日的 09:00 都匹配;此表达式不限于第一个星期一。
预览重复的 01:30
目标:观察纽约回拨期间的预览策略。
- 输入 30 1 * * *,时区 America/New_York,起点 2026-11-01T04:00:00Z。
- 分析并比较前两个 ISO 时刻。
结果:前两个为 2026-11-01T05:30:00.000Z 与 2026-11-01T06:30:00.000Z。
生产可用片段
计算示例
text
0 9 1 * 1 → 每月1日或星期一的09:00
0 0 31 2 * → 没有对应的公历日期
30 1 * * * → 回拨可能产生两个本地01:30时刻常见问题
支持哪些 Cron 语法?
支持五个数字字段中的 *、十进制数、范围、列表、*/n 和 a-b/n;星期日可用 0 或 7。不支持名称、秒字段、@daily 等宏、5/10、?、L、W、# 或跨界范围。
日期和星期之间是 AND 还是 OR?
两项都不以 * 开头时使用 OR。例如 0 9 1 * 1 匹配每个星期一及每月第一天的 09:00;任一日期字段以 * 开头时,两项都须满足。
为什么不足五次执行时间?
只搜索起始时刻之后 365 个经过日内的匹配。年度或闰日计划可能不足五次或没有匹配,无匹配本身不代表语法无效。
夏令时变化如何处理?
预览跳过不存在的本地分钟,重复分钟会列出两次并附不同 ISO 时刻。实际调度器可能采用其他策略,请对照其自身的下一次执行结果。
切换字段说明会重新搜索吗?
不会。输入变更会清除旧输出,点击分析才搜索;字段说明选项只改变显示。表达式、起点与设置保存在本地,清空可删除。
继续浏览