Cron 任务生成器

通过字段控件可视化构建 cron 表达式。为分钟、小时、日、月、星期选择每个/每N个/范围/指定值,即时获得英文说明和最近 10 次执行时间。免费在线 cron 生成器。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
输入分钟、小时、日、月、星期五个字段。合法表达式会同步字段控件,无效字段会显示错误。
原样复制当前表达式,不包含说明和执行日期。
UTC 按 UTC 计算并显示日期;本地按浏览器时区计算并显示本地时间。时区选择会保存。
预设: 选择八个预设之一,同时更新表达式和五个字段。
编辑字段
分钟 0–59 分钟范围为 0–59。可选每个、每 N 个、范围或指定值;指定值支持逗号分隔的数字。
*
小时 0–23 小时范围为 0–23。选择模式,指定值模式使用数值按钮;最后一个已选值会保留。
*
日 1–31 日范围为 1–31。日和星期均限定时,任一字段匹配即可;日期字段以 * 开头时,两个字段都需匹配。
*
月 1–12 月份范围为 1–12。指定值模式可选择月份按钮;全选月份会生成 *。
*
星期 0–6 按钮从星期日 0 到星期六 6。直接输入表达式也支持用 7 表示星期日。
*

输入合法表达式,查看说明和执行时间。

示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

阿里云函数计算默认按 UTC 执行

表达式本身不带时区,由读取它的调度器决定。阿里云函数计算「定时触发器」文档写明,自定义 Cron 表达式默认以 UTC 时间运行,即北京时间减去 8 小时,并举例:北京时间每天 12:00 要写成 0 0 4 * * *。这个例子开头多了一个秒字段,直接粘到上方输入框会提示:

需要 5 个字段:分钟 小时 日 月 星期

去掉开头的秒,得到五字段的 0 4 * * *。保持工具的「UTC」模式,从 2026-10-08 00:00 UTC(北京时间 08:00)算起,英文说明和前三次执行时间是:

At 4:00
2026-10-08 04:00 UTC
2026-10-09 04:00 UTC
2026-10-10 04:00 UTC

说明句在所有语言版本都是英文,这里照原样引用。阿里云的同一份文档还允许在表达式前写 CRON_TZ=Asia/Shanghai,改按北京时间解释。本工具不读取 CRON_TZ,把整行粘进来同样会提示需要 5 个字段。

用「本地」模式核对北京时间

浏览器时区是 Asia/Shanghai 时,把开关切到「本地」,再输入北京时间的写法 0 12 * * *。同一起点下,列出的时刻与上面 UTC 的 04:00 是同一批时间点:

At 12:00
2026-10-08 12:00
2026-10-09 12:00
2026-10-10 12:00

「本地」模式下,页面按浏览器的语言设置显示日期格式,并在后面加上时区名(如 Asia/Shanghai),上面统一写成「年-月-日 时:分」。所以写给阿里云的表达式,有两种核对办法:用 CRON_TZ=Asia/Shanghai 时,在本工具里用「本地」模式写北京时间;不写 CRON_TZ 时,用「UTC」模式写减去 8 小时后的时间。凌晨 0 点到 8 点之间的北京时间换成 UTC 会落到前一天,星期字段也要跟着往前挪一天,例如北京时间周一 07:00 是 UTC 周日 23:00。

字段控件不会替你改值

「编辑字段」里的步长、起止数字会原样写进表达式,工具不会替你把 0 改成 1,也不会把起止颠倒的范围调过来,而是像手写表达式一样报错。例如分钟步长填 0,或小时范围写成 17 到 9:

分钟:「*/0」无效。请用 0–59 的数字以及 *、-、/ 和逗号。
小时:「17-9」无效。请用 0–23 的数字以及 *、-、/ 和逗号。

「指定值」模式下分钟输入框留空也会报错(「分钟:输入框为空。…」),不会当作 *,否则「每天 9:00」会变成 9 点内每分钟执行。报错期间说明和执行时间会清空,「复制」按钮停用,改成有效值后恢复。步长大于字段范围是合法的 cron(cronie 会给出警告但照常接受),会保留:分钟写 */75 时每小时只在 :00 执行一次。日和星期两个字段都限定时,符合任一个即执行;只要其中一个以 * 开头(包括 */2),两者就必须同时符合,这与 cronie 一致。

Cron 表达式字段参考

字段位置允许的值特殊字符
分钟第 1 位0–59* / - ,
小时第 2 位0–23* / - ,
日第 3 位1–31* / - ,
月第 4 位1–12* / - ,
星期第 5 位0–7(日 = 0 或 7)* / - ,

常用 Cron 调度示例

下表第三列是工具对每个表达式给出的英文说明(只有英文),可以用来核对输入是否被按预期理解。

表达式含义工具给出的英文说明
* * * * *每分钟At every minute past every hour
0 * * * *每小时整点At every hour
0 0 * * *每天午夜At midnight
0 9 * * 1-5工作日上午 9 点At 9:00, on Monday through Friday
*/5 * * * *每 5 分钟At every 5 minutes past every hour
0 0 1 * *每月第 1 天At midnight, on day 1 of the month
0 0 * * 0每周日午夜At midnight, on Sunday
0 0 1 1 *每年 1 月 1 日At midnight, on day 1 of the month, in January

限制

  • 只有五个字段,不支持秒字段,也不支持 Quartz 或 Spring 的扩展(?、L、W、#)。输入后会指出是哪个字段的哪个值,例如 0 0 L * * 提示日字段的「L」无效。
  • 数字必须是十进制整数:1.5、5abc、1#2 都会报错。步长前面必须是 * 或范围,5/10 会报错,cronie 也不接受这种写法。
  • 星期为 0–7 以及英文缩写 sun–sat,0 和 7 都是星期日。手写以 7 结尾的范围(如 5-7)时,字段控件改用星期按钮显示,因为「范围」框最大只到 6;输入框里保留你写的内容。
  • 永远不会出现的日期(如 0 0 30 2 *,2 月 30 日)不会报错,执行时间列表为空。
  • 说明句在所有语言版本都是英文。

FAQ

什么是 cron 表达式?

Cron 表达式是由五个空格分隔的字段组成的字符串,定义周期性执行计划:分钟(0–59)、小时(0–23)、日(1–31)、月(1–12)、星期(0–7,0 和 7 都是星期日)。星号(*)表示「每个值」;*/N 表示「每隔 N 个」;范围如 9-17 表示「从 9 到 17」;列表如 1,15 表示「第 1 和第 15」。

Cron 任务生成器和 Cron 表达式解析器有什么区别?

Cron 任务生成器让你通过字段控件构建 cron 表达式:选好条件后自动生成表达式。Cron 表达式解析器则相反:输入已有的表达式,它会解释其含义并显示接下来的执行时间。

「每 N 个」模式是什么意思?

「每 N 个」模式生成步进表达式,例如分钟字段的 */5 表示「每隔 5 分钟」(0、5、10、15……55)。可用于任意字段:小时字段的 */2 表示「每 2 小时」,月字段的 */3 表示「每 3 个月」,以此类推。

可以跨字段组合不同模式吗?

可以。每个字段相互独立,可以自由组合模式。例如,要在每月 1 日和 15 日上午 9 点运行,可以将分钟设为「指定值」0,小时设为「指定值」9,日设为「指定值」1 和 15,月和星期保持「每个」,得到 0 9 1,15 * *。

为什么不支持六字段(含秒)的 cron 表达式?

五字段是 cron(crontab(5))、GitHub Actions 和 Kubernetes CronJob 使用的格式。Quartz Scheduler 等工具在前面加了秒字段,阿里云函数计算、腾讯云云函数的定时触发器也带秒,但各家写法不同,没有通用标准。本工具只生成五字段格式,用于这些平台时请按它们的文档补上秒等字段。

表达式会发送到服务器或被保存吗?

不会发送到服务器。页面会把最后一个合法表达式和 UTC / 本地的选择保存在本浏览器的 localStorage 里,下次打开时恢复;Ctrl/⌘+L 只清空输入框,不删除已保存的值,在浏览器里清除本站数据即可删除。页面统计只在你修改计划或复制时记录使用事件(工具名和动作),不包含表达式。