⚠️ 使用提醒:
· 本工具只支持标准 5 段 cron(分 时 日 月 周),这是 Linux crontab 的格式。Quartz / Spring 的 6 段格式(第 1 段是「秒」)不支持,输入 6 段会直接报错并提示——它在本工具里不是被静默忽略。
· 「日」和「星期」都写了具体值时,按 Vixie cron 的「或」语义处理(满足其一即可),这与部分系统实现的「且」不同,请注意核对。
· 不支持 Quartz 特有的 L(最后一天)、W(最近工作日)、#(第几个周几)语法。
· 执行时间按你浏览器的本地时区推算,若服务器在别的时区,结果会与实际不一致。
本工具只做解析与推算,不会真的去执行任何任务,也不会读写服务器的 crontab。
Cron 表达式最大的问题是「没有反馈」——写完 0 9 * * 1-5,除了定时任务作者本人,其他人基本看不出这是「工作日早上 9 点」。
更麻烦的是写错了也不会立刻报错:多打一个逗号、把 30 写成 30 却在「日」的位置、想表达「每月 1 号」却写成每月 1 点——这些错误往往要等到任务该跑而没跑时才被发现。
这个工具把抽象的数字翻译成人话:
· 中文解释:一句话说清执行时机,比如「周一到周五 09:00」;
· 字段拆解:五个字段各自展开成具体取值,1-5 会展开成周一、周二……让你直接看到它到底匹配了什么;
· 未来 10 次执行时间:按本地时区推算真实日期时间(带星期与「几小时后」),一眼就能验证是否符合预期;
· 永不执行的组合会被发现:比如 0 0 30 2 *(2 月 30 日)这类不存在的日期,工具会明确告诉你找不到匹配时间;
· 常用模板一键套用:每分钟、每天 0 点、工作日 9 点、每月 1 号、每季度第一天……
· 语法即时校验:范围越界(分钟写 60)、字段数量不对、步长为 0 都会立刻给出中文错误说明。
常用于:接手他人项目时读懂已有 crontab、自己写定时任务前先验证、给同事解释某个表达式的含义、排查「任务为什么没按预期跑」。
所有计算均在浏览器本地完成,不联网、不上传。
标准 cron 表达式由 5 个空格分隔的字段组成,顺序固定:
分钟 小时 日 月 星期
· 分钟:0-59
· 小时:0-23(注意是 24 小时制,晚上 8 点是 20 不是 8)
· 日:1-31
· 月:1-12,也可写 JAN / FEB / …… / DEC
· 星期:0-7,其中 0 和 7 都表示周日,也可写 SUN / MON / …… / SAT
每个字段可用的写法:* 任意值、, 列举(1,15)、- 范围(1-5)、/ 步长(*/5 每 5 个单位)。
小时是 24 小时制:想表达晚上 8 点,要写 20,写 8 是早上 8 点。
「日」从 1 开始,「星期」从 0 开始:0 0 1 * * 是每月 1 号,但 0 0 * * 1 是每周一,别把两者的下标习惯混了。
想表达「每月 1 号」不要写 0 1 1 * *:那样是「每月 1 日凌晨 1 点」,多了个 1 就多了一层含义。
*/5 与 5 完全不同:前者是每 5 个单位,后者是第 5 个单位——5 * * * * 是每小时的 5 分执行一次,不是每小时执行 5 次。
0 0 9 * * 1-5 ← Quartz 的 6 段,含义是「周一到周五 9:00:00」0 9 * * 1-5 ← 标准 5 段,含义也是「周一到周五 9:00」* 时,满足任意一个就执行。0 0 1 * 1 的含义是「每月 1 号或每周一」的 0 点执行,而不是「既是 1 号又是周一」。* 时,就退化为对另一个取「且」(相当于只看那个字段)。date 确认时区(timedatectl 可查看);或者干脆在 crontab 里显式设置 CRON_TZ 环境变量。L(最后一天)、W(最近的工作日)、#(第几个周几,如「第 3 个周五」)都是 Quartz 的扩展语法,不属于标准 cron。0 0 30 2 * 要求「2 月 30 日」,而 2 月最多 29 天,这个表达式永远不会匹配——本工具会明确提示找不到匹配时间。0 0 31 4 *(4 月 31 日)、0 0 30 2 1 等。0 0 31 * * 会在 1、3、5、7、8、10、12 月的 31 号执行,其他月份自然跳过。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!