Cron 表达式生成器
可视化点选生成 5 段 / 6 段 Cron 表达式,实时中文描述与未来执行时间预览。
隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传逐步选择器
每个字段可分别选择任意值 *、具体值、区间 a-b、步长*/n 或列表 a,b,c。
含义说明
正在生成…
未来 5 次执行时间
按浏览器本地时区计算。
crontab 行
直接复制到 Linux crontab 中使用(仅 5 段模式)。
输入表达式后点击「解析」,即可查看逐字段拆解与最近执行时间。
使用说明
- 选择模式(5 段 / 6 段)后,在「逐步选择器」中依次设置秒 / 分 / 时 / 日 / 月 / 周各字段,表达式与中文描述会实时更新。
- 取值方式为「列表 / 高级」时,可直接输入 cron 原生写法,例如
1,15,L、MON-FRI、6#3;「区间」「步长」也可用a-b/n形式。 - 5 段模式下可一键复制完整 crontab 行(表达式 + 命令);复制表达式用于填到调度器配置中。
- 切到「反向解析」粘贴任意表达式,可查看逐字段拆解、中文含义与最近 5 次执行时间,并点击「回填到生成器」继续可视化调整。
- 未来执行时间按浏览器本地时区计算,仅作预览,请以目标服务器的时区与实现为准。
常见 cron 陷阱
- 时区不一致。crontab 按服务器所在时区执行,本工具按浏览器本地时区预测,两者不同会让实际触发时间整体偏移,请核对服务器时区(如
CRON_TZ/容器时区)。 - 「日」与「周」的 OR 语义。5 段模式下两者同时被指定(都非
*)时按「或」触发,而非「与」:0 0 1 * 1表示「每月 1 日或每周一」。 */n从字段最小值起算。例如*/5在「分」字段为 0、5、10…,「日」字段则为 1、3、5…,并不是从你写入配置的那一刻开始计时。- 不可达日期永不触发。如「2 月 30 日」这类组合在现实中不存在,表达式永远不会命中,工具会给出「该表达式永不触发」的警告。
- 夏令时跳变。存在夏令时的时区在切换日可能出现时间跳跃,
30 2 * * *这类时间可能被跳过或执行两次。 - 周字段取值与 Quartz 约束。周字段
0与7都表示周日(1-6为周一至周六);6 段模式下「日」「周」必须有一个为?。
工作原理
- 1先选择模式:5 段为「分 时 日 月 周」(Linux crontab / vixie),6 段为「秒 分 时 日 月 周」(Quartz,用 ? 表示不指定)。
- 2工具按字段顺序为秒 / 分 / 时 / 日 / 月 / 周各渲染一行取值方式选择器,可分别使用任意值、具体值、区间、步长或列表;各字段片段拼接为完整表达式,连续值会自动压缩(如 1,2,3 → 1-3)。
- 36 段(Quartz)模式下工具会自动满足「日 / 周」中至少有一个为 ? 的互斥约束,避免生成无法被解析的非法表达式。
- 4计算执行时间时,工具以「分」(6 段为「秒」)为最小粒度在日历上迭代匹配月 / 日 / 时 / 分 / 秒;5 段模式下「日」与「周」同时被指定时按 vixie「或」语义,6 段按「与」语义。
- 5解析模式逐字段校验取值合法性(支持 0-7 周、JAN-DEC / SUN-SAT 别名、L / W / # 等语法),定位到具体出错字段,并对「2 月 30 日」这类永不触发的组合给出警告。
常见问题
5 段和 6 段 Cron 有什么区别?该选哪个?
5 段是「分 时 日 月 周」,即 Linux crontab / vixie cron 的经典写法;6 段在开头多一个「秒」,属于 Quartz 风格,常用于 Java 生态(Spring @Scheduled、Quartz 调度器)。写 Linux crontab 用 5 段,写 Java 定时任务用 6 段,两者不能混用。
为什么 6 段模式下「日」和「周」必须有一个是 ? ?
这是 Quartz 的硬性约束:Quartz 中「日」与「周」不能同时被指定(否则语义不明确),因此两者中必须有且仅有一个用 ? 表示「不指定」。本工具在 6 段模式下会自动补 ? 并给出提示,解析时也会对违反该约束的表达式报错。
「日」和「周」同时被指定时,按什么语义执行?
标准 cron(vixie)中「日」与「周」同时被指定(都非 *)时为「或」语义:满足任一条件即触发,例如 0 0 1 * 1 表示「每月 1 日或每周一」的 0 点。Quartz(6 段)为「与」语义,但要求两者中有一个为 ?。本工具按模式区分处理,并在描述中注明。
*/n 是从哪里开始步进的?
*/n 从该字段的最小值开始步进,而不是从当前时间开始。例如「分」字段的最小值是 0,*/5 表示 0、5、10…55 分;「日」字段最小值是 1,*/2 表示 1、3、5…日。若想以某个值作为起点,可用 a/n 或 a-b/n 写法。
未来执行时间为什么只显示 5 次?表达式永不触发会怎样?
未来执行时间仅在本地做预览,因此默认展示最近 5 次;工具最多向前搜索 4 年并设有迭代上限。若表达式永不触发(如「2 月 30 日」)或触发间隔过长,会给出「该表达式永不触发 / 未找到执行时间」的警告而不会卡死页面。
数据会上传到服务器吗?
不会。全部生成、解析与执行时间计算都在你的浏览器本地完成,不发起任何网络请求,断网也能完整使用;未使用任何需要密钥的第三方服务。