⏰ Cron 表达式

分钟0-59 小时0-23 日1-31 月1-12 星期0-7

📚 常用模板

🈶 中文解释

📊 执行频率

🧩 字段拆解

🔮 未来 10 次执行时间

⚠️ 使用提醒:
· 本工具只支持标准 5 段 cron(分 时 日 月 周),这是 Linux crontab 的格式。Quartz / Spring 的 6 段格式(第 1 段是「秒」)不支持,输入 6 段会直接报错并提示——它在本工具里不是被静默忽略。
· 「日」和「星期」都写了具体值时,按 Vixie cron 的「或」语义处理(满足其一即可),这与部分系统实现的「且」不同,请注意核对。
· 不支持 Quartz 特有的 L(最后一天)、W(最近工作日)、#(第几个周几)语法。
· 执行时间按你浏览器的本地时区推算,若服务器在别的时区,结果会与实际不一致。
本工具只做解析与推算,不会真的去执行任何任务,也不会读写服务器的 crontab。

⏰

Cron 表达式解析器

效率工具 完全免费 🌙 支持黑夜模式 🔒 纯前端本地计算 🈶 中文解释

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、自己写定时任务前先验证、给同事解释某个表达式的含义、排查「任务为什么没按预期跑」。
所有计算均在浏览器本地完成,不联网、不上传。

类别效率工具
运行方式纯前端 · 离线可用
支持语法标准 5 段 cron

核心特性

中文自然语言解释
字段取值展开
未来 10 次执行时间
常用模板一键套用
语法错误中文提示
支持 @daily 等别名
支持 JAN-DEC 缩写
支持黑夜模式

五个字段分别是什么

标准 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 个单位)。

怎么用

  1. 第 1 步
    在输入框里写或粘贴 cron 表达式;不确定就点下面「常用模板」里的任意一项先看看效果。
  2. 第 2 步
    左侧会立刻给出中文解释,先确认它说的是不是你想要的时机。
  3. 第 3 步
    看右侧「字段拆解」,核对每个字段展开后的取值;这一步能抓出「位置写错」这类错误。
  4. 第 4 步
    最后看「未来 10 次执行时间」,确认具体日期时间符合预期,再复制回你的 crontab。

几个易错点

小时是 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 次。

更新记录

  • v1.0 2026-09-11 工具上线:支持标准 5 段 cron 解析(分 时 日 月 周);支持 * / , / - / / 四种写法与组合;支持 JAN-DEC、SUN-SAT 英文缩写与 @daily / @hourly 等别名;提供中文自然语言解释、字段取值拆解表、未来 10 次执行时间推算(含星期与相对时间)、14 个常用模板一键套用;按 Vixie cron 语义处理「日」与「星期」的「或」关系;对范围越界、字段数不符、步长非法等给出中文错误提示;适配黑夜模式;纯前端本地计算。

常见问题

为什么我输入 6 段表达式,工具直接报错?
因为标准 cron 只有 5 段,而 Quartz / Spring 用的是 6 段(在最前面多一个「秒」字段):
0 0 9 * * 1-5 ← Quartz 的 6 段,含义是「周一到周五 9:00:00」
0 9 * * 1-5 ← 标准 5 段,含义也是「周一到周五 9:00」
两者只是差最前面那个 0。
本工具故意不做自动兼容:因为 6 段里「秒」的表达能力是 5 段没有的,如果静默丢掉第一段,你写的「每 30 秒」会被悄悄改写成「每 30 分钟」之类的意思,这种沉默的错误比直接报错危险得多。所以这里选择明确报错并提示你删掉「秒」那一段。
「日」和「星期」同时写了具体值,是「且」还是「或」?
本工具按 Vixie cron 的「或」语义实现:当「日」和「星期」两者都不是 * 时,满足任意一个就执行。
例如 0 0 1 * 1 的含义是「每月 1 号或每周一」的 0 点执行,而不是「既是 1 号又是周一」。
当其中至少一个是 * 时,就退化为对另一个取「且」(相当于只看那个字段)。
需要说明的是:这一点在不同实现里并不统一,有少数 cron 实现(以及部分云厂商的调度服务)会按「且」处理。上线前请以你实际使用的调度器文档为准,本工具的推算结果仅供参考。
为什么执行时间和我服务器上的对不上?
因为时区。本工具的「未来 10 次执行时间」是按你浏览器的本地时区换算的,而服务器可能运行在 UTC 或别的时区。
cron 的执行时刻是服务器本地时间。如果你在 UTC+8 的浏览器里看到「09:00」,而服务器时区是 UTC,那么服务器会在 UTC 09:00(也就是北京时间 17:00)执行。
规避方法:写跨时区的定时任务时,统一用 UTC 思考并在服务器上用 date 确认时区(timedatectl 可查看);或者干脆在 crontab 里显式设置 CRON_TZ 环境变量。
支持 L、W、# 这些写法吗?
不支持。L(最后一天)、W(最近的工作日)、#(第几个周几,如「第 3 个周五」)都是 Quartz 的扩展语法,不属于标准 cron。
由于本工具专注标准 5 段 cron,输入这些字符会得到明确的中文报错,而不会被当成普通字符静默忽略——避免你以为设置生效了、实际却没生效。
什么样的表达式会导致任务「永远不执行」?
最常见的是引用了不存在的日期。例如 0 0 30 2 * 要求「2 月 30 日」,而 2 月最多 29 天,这个表达式永远不会匹配——本工具会明确提示找不到匹配时间。
类似地还有 0 0 31 4 *(4 月 31 日)、0 0 30 2 1 等。
注意一个反直觉的点:「日」字段写 31 通常是安全的,因为 cron 在短月份里会自动跳过不存在的日期,例如 0 0 31 * * 会在 1、3、5、7、8、10、12 月的 31 号执行,其他月份自然跳过。
所以真正的问题不是「31」本身,而是月份与日期组合起来不可能存在的情况。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码