Cron 任务生成器
通过字段控件可视化构建 cron 表达式。为分钟、小时、日、月、星期选择每个/每N个/范围/指定值,即时获得英文说明和最近 10 次执行时间。免费在线 cron 生成器。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
阿里云函数计算默认按 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 只清空输入框,不删除已保存的值,在浏览器里清除本站数据即可删除。页面统计只在你修改计划或复制时记录使用事件(工具名和动作),不包含表达式。