⏱️ 选择规则 → 生成 Cron

标准 5 段:分 时 日 月 周,支持 * , - / 与 L(月末)。

生成的是标准 5 段 crontab 表达式,可直接用于 Linux crontab、Quartz(5 段模式)、各类定时任务平台。全程本地计算,不上传。

Cron 表达式
* * * * *
每分钟执行一次
字段数 5
最近执行 —
状态 合法
—

    📊 Cron 五字段速查表

    顺序固定为「分 时 日 月 周」,缺一不可。

    字段允许值特殊符号示例
    分钟0-59* , - /*/5 每 5 分钟;0 第 0 分
    小时0-23* , - /9-18 9 点到 18 点;0,12 0 点和 12 点
    日1-31* , - / L1 每月 1 号;L 月末
    月1-12* , - /*/3 每 3 个月;1,7 1 月和 7 月
    周0-6(0=周日)* , - /1-5 周一到周五;0,6 周末

    ⚠️ 写 Cron 的四个高频坑

    定时任务「不按预期跑」,多半踩了下面几个坑。

    坑后果正确做法
    日和周同时限制多数实现里是「或」关系,触发次数超出预期一般只限制其中一个,另一个用 *
    星期数字歧义有的系统 0=周日,有的 1=周一,7 也可能是周日以你所用系统文档为准,本工具采用 0=周日,6=周六
    服务器时区不一致本地算好的 9 点,到服务器变成别的时间确认服务器时区,容器默认常为 UTC
    任务执行重叠上一次没跑完下一次又启动,造成数据错乱加锁 / flock,或让任务间隔大于最长执行时间

    ⚠️ 本工具仅在浏览器本地按标准 cron 规则推导表达式与执行时间,不代替你的系统实际调度。
    「下次执行时间」基于你当前设备的系统时间与时区计算,服务器若使用 UTC 或其他时区,实际触发时刻会不同。
    不同调度系统对星期(0/7 起始)、日与周同时约束、L / 秒字段、Quartz 6-7 段格式的支持存在差异,上线前请以目标系统(crontab、Quartz、Airflow、云函数等)的官方文档与实际测试为准。
    像「2 月 30 日」这类不存在的日期永远不会触发,工具会提示无下一次执行,请改用月末 L 或有效日期。
    所有计算都在你自己的浏览器本地完成,不会上传到任何服务器。

    ⏱️

    Cron 表达式生成器

    开发工具 完全免费 🌙 支持黑夜模式 🔒 纯前端,不上传 🕐 下次执行预览 📋 一键复制

    cron 是 Linux 和大量定时任务系统使用的时间表达式,用 5 段符号描述「什么时候执行」。它强大但反直觉:手写 0 9 * * 1-5 容易在星期、日与周的组合上出错。
    这个工具把晦涩的符号变成点选规则:
    ① 可视化配置:分钟、小时、日、月、周分别选择「每 / 每 N / 区间 / 列表 / 指定」等规则;
    ② 实时生成:选择即生成标准 5 段表达式,并给出每段的中文含义;
    ③ 下次执行预览:本地计算并列出接下来 5 次真实触发时间,对不对一眼可见;
    ④ 常用预设:每分钟、每小时整点、每天 9 点、工作日、每周、每月、每年等一键套用;
    ⑤ 手动解析:也可以直接粘贴一个表达式,反查含义与执行时间;
    ⑥ 一键复制:粘贴到 crontab 或定时任务平台即可。
    必须注意:
    · 「下次执行」按你设备的时区算,服务器时区可能不同;
    · 日和周一般只设一个,同时限制在多数系统里是「或」;
    · 不存在的日期(如 2 月 30 日)不会触发。
    整个计算过程都在你自己的浏览器里跑,不上传任何内容。

    类别开发工具 / 运维
    表达式格式标准 5 段:分 时 日 月 周
    支持符号* 逗号 - 斜杠 / L(月末)
    运行方式纯前端本地,不上传

    核心特性

    可视化五段配置
    实时生成表达式
    每段中文释义
    下次 5 次执行预览
    常用预设一键套用
    手动输入反解析
    月末 L 支持
    一键复制

    关于这个工具

    实现逻辑:
    ① 构建态:为五个字段分别维护「模式 + 参数」,按规则映射成 * / *\/N / a-b / a,b,c / v / L 等片段并拼接;
    ② 解析态:把表达式每段展开成允许值集合,支持 *、列表、区间、步长 *\/n、a-b/n、月末 L;
    ③ 求下次执行:从当前分钟起逐分钟向前匹配,命中分、时、日(含星期)、月约束即记录,最多向后推 366 天、取前 5 次;
    ④ 无效检测:数字越界、区间反向、空集、永不触发(如 2 月 30 日)会给出明确提示;
    ⑤ 双向同步:点预设或手动输入会回填构建器,编辑构建器会更新表达式。
    它不做:不连接你的服务器、不真正创建定时任务、不处理 Quartz 特有秒/年字段与 ? # W 等扩展符号。

    怎么用

    1. 第 1 步
      最简单:直接点上方「常用预设」,如「工作日 9 点」,表达式自动生成。
    2. 第 2 步
      需要自定义时,逐字段选择规则(每 / 每 N / 区间 / 列表 / 指定)并按提示填值。
    3. 第 3 步
      查看右侧表达式、中文含义与「接下来 5 次执行时间」是否符合预期。
    4. 第 4 步
      也可在手动输入框粘贴已有表达式,反查它的含义和执行时间。
    5. 第 5 步
      点「📋 复制 Cron 表达式」,粘贴到 crontab 或定时任务平台保存。

    更新记录

    • v1.0 2026-10-11 工具正式上线:可视化配置 分 / 时 / 日 / 月 / 周 五段,实时生成标准 cron 表达式,支持每段中文释义、接下来 5 次执行时间本地推算、常用预设、手动反解析、月末 L、合法性与永不触发检测、一键复制;附五字段速查表与四个高频坑。纯前端本地计算,不上传,适配黑夜模式。

    常见问题

    为什么工具显示的下次执行时间和服务器对不上?
    因为「下次执行」是按你当前这台设备的系统时间和时区计算的。
    很多 Linux 服务器、Docker 容器默认时区是 UTC,比北京时间晚 8 小时。你填的「每天 9 点」在 UTC 服务器上其实是北京时间 17 点。
    解决:① 把服务器时区改成你需要的时区(如 Asia/Shanghai);或 ② 按服务器时区换算后再填表达式。上线前建议先手动触发或看日志确认一次。
    「日」和「星期」能不能同时设置?
    技术上能写,但强烈不建议新手同时限制。
    在传统 crontab(以及 Vixie cron)里,当「日」和「星期」都不是 * 时,两者是「或」的关系——满足任意一个就触发,而不是「且」,结果往往比你想的频繁得多。
    例如「每月 1 号且是周一」这种需求,靠单纯日+周写不出来,通常要在脚本内部再判断一次星期。所以一般做法是:按日期触发就把周设为 *,按星期触发就把日设为 *。
    Quartz 的 6 段、7 段表达式支持吗?
    本工具生成的是标准 5 段 crontab:分 时 日 月 周。
    Quartz(Java)常用 6 段(多了开头的「秒」)或 7 段(再加「年」),还支持 ? # W 等本工具不处理的扩展符号。
    如果你用 Quartz:可把本工具结果作为后 5 段,在最前面补「秒」(通常填 0),即 0 分 时 日 月 周;涉及 ? # 的复杂规则仍请以 Quartz 文档为准。
    为什么填了日期却提示「没有下一次执行」?
    最常见原因是填了不存在或永不匹配的组合:
    · 0 0 30 2 *——2 月没有 30 号,永远不会触发,可改用月末 L;
    · 区间写反,如小时填 18-9;
    · 列表/步长里出现越界数字,如分钟填 61。
    工具会把这类情况标为「不合法 / 无下一次执行」并提示字段,修正成有效日期后即可正常推算。
    怎么让任务「每月最后一天 23:59」执行?
    在「日」字段选择「每月最后一天」(对应符号 L),分钟填 59、小时填 23,得到 59 23 L * *。
    工具会正确识别大小月与闰月,推导出每个月最后一天的执行时间。
    注意:L 是部分实现的扩展写法,标准 crontab 原生不支持「日」位的 L——如果你的系统不支持,常见替代是「每月 1 号 00:00 执行上个月的收尾」,或在脚本里判断明天是否为 1 号。

    💬 留言板 0

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

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

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