Cron 表达式解析与执行时间预测
转换计算所有处理都在浏览器本地完成,数据不上传服务器
输入
输出
把「*/15 9-17 * * 1-5」这样的表达式翻译成人话:先逐字段说明每一位写了什么,再给出一句话总结,最后列出接下来几次会在什么时候执行。执行时间按「跳到下一个可能匹配的时刻」计算,而不是逐分钟去试,所以即使指定的是 2 月 29 日也能立刻出结果。写了一个永远不会触发的表达式(比如 2 月 31 日),工具会直接说明原因,而不是让页面一直转。
功能
- 五种写法全都支持:星号、单值、区间 a-b、列表 a,b,c、步长(星号或区间后接 /n)
- 月份与星期可以直接写 JAN-DEC、SUN-SAT 名字
- 逐字段说明 + 一句话总结(如「每周一至周五 9 点到 17 点 的 每 15 分钟」)
- 列出接下来 1-50 次执行时间,并标出星期
- 正确处理「日」与「星期」都限定时的「或」关系(Vixie cron 语义)
- 支持 @daily、@hourly、@weekly、@monthly、@yearly 等宏
- 永远不会触发的表达式当场判死,并指明是哪个字段的组合不可能
- 执行时间可按本地时区或 UTC 显示(服务器上的 cron 多数按 UTC 跑)
使用方法
- 把 5 字段 cron 表达式粘进输入框
- 选择说明语言、列出几次、按哪个时区显示
- 点「运行」(或按 Ctrl/⌘ + Enter)
- 复制结果,或按说明修正表达式
常见问题
- 为什么我的 6 字段表达式被拒绝了?
- 前面多一个「秒」字段是 Quartz、Spring 的写法,经典 cron 只有 5 个字段。如果按 5 字段去读 6 字段的表达式,每一个字段都会错位,算出来的执行时间和你想的完全不是一回事 —— 所以这里选择直接拒绝并提示删掉秒那一栏,而不是硬着头皮解析。
- 「日」和「星期」同时写了会怎样?
- 经典 cron(Vixie)的规则是「或」:「0 0 1 * 1」表示每月 1 号或每周一都执行。只有当其中一个写了星号时,才退化成「与」。这条规则很多实现会做错,本工具按 Vixie 的语义处理:两个字段都受限时取或。
- 执行时间按哪个时区算?
- 可以切换,默认本地时区。容器与服务器上的 cron 通常按 UTC 运行,本地调试时按本地时区看更直观,所以两个都给。切换时区后列出的时刻会整体平移,星期也会跟着变。
- 为什么提示表达式永远不会触发?
- 比如「0 0 31 2 *」:2 月没有 31 号,任何年份都不会执行。工具会检查「日」与「月」的组合是否在任何年份都不存在。此外还设有 4 年的搜索上限(闰年的最长间隔可达 8 年),超出上限就如实报告找不到,绝不会为了找而一直算下去。
相关工具
时间戳转换
转换计算把 Unix 时间戳还原成日期时间,或把日期时间算成时间戳。秒与毫秒自动识别,可选常用时区,结果逐行可复制,还能批量转换与导出。全部在浏览器本地完成。
日期计算
转换计算算两个日期之间相差多少天,或给一个日期加减若干天、周、月。日期用日历挑或直接粘贴,结束日期留空就与今天比较。全部在浏览器本地完成。
进制转换
转换计算在二、八、十、十六、36 进制之间互转,五种结果一次全部给出,19 位的雪花 ID 也能一位不差。全部在浏览器本地完成。
颜色转换
转换计算在 HEX、RGB、HSL 与 HSV 之间互转颜色,并算出文字与底色的 WCAG 对比度,说明有没有达到 AA 或 AAA。全部在浏览器本地完成。
单位换算
转换计算在长度、重量、温度、体积这类单位之间换算,输入一个值就能看到同类全部单位下的结果。全部在浏览器本地完成,不上传。