跳到正文

cron 表达式生成

Cron Builder

每个字段一个输入框,旁边写着允许的取值范围,键入就拼出 cron 表达式,每改一次就把对应的执行计划显示出来。

逐字段拼出一条 cron 表达式,每个字段旁边是它的取值范围和含义,接下来几次执行随你输入更新。它和解析器是同一个界面、字段可编辑,因为拼一条和读一条是同一个问题的两个方向。

🔒 完全在你的浏览器里运行cronschedulegenerator

表达式

五个字段,或者在最前面加上秒的六个字段。`@daily`、`@hourly` 之类也能用。

用大白话说

星期一到星期五在 09:00 执行。

一个字段一个字段地搭

cron 的每个字段一行。
字段值含义
分0-590分钟`*/15` 是每一刻钟,`15` 是每小时的第 15 分。
时0-239点一律 24 小时制,除非调度器另有规定,一律用服务器的时区。
日1-31每天`L` 是最后一天。写 31 的话,短的月份就直接不触发。
月1-12 或 JAN-DEC每月名称不区分大小写。
星期0-7 或 SUN-SAT星期一到星期五0 和 7 都是星期日。`5#3` 是第三个星期五,`5L` 是最后一个。

接下来的执行

数量
这个计划在今后五年里一次也不会执行。2 月 30 日这样的日期永远不会到来。

时区

UTC

按上面选的时区计算,而不是按浏览器的。夏令时跳过的钟面时间,这里也跳过。

怎么用

  1. 从预设开始

    每小时、每天三点、工作日九点、每月 1 号、每月最后一天。大多数计划离这几个只差一处改动。

  2. 编辑你需要的字段

    每个字段有自己的输入框,名字下方写着合法范围。上方的白话句子随你输入自己改写。

  3. 对照接下来几次执行确认

    用你的调度器所在的时区,不是你自己的。一个看起来对却在错误的小时运行的计划,几乎总是时区问题,不是字段写错。

常见问题

怎么每 90 分钟运行一次?

一条表达式做不到。cron 的字段是彼此独立的,所以分钟字段里的 `*/90` 是非法的,也没有办法表达一个不能整除一小时的周期。两条表达式,或者一个支持间隔的调度器,才是答案。

我该加秒字段吗?

只在你的调度器要六个字段时——Quartz 和 Spring 要,Unix cron 不要,而且会拒绝这条表达式。这里的按钮能加上和去掉它,让你看到同一个计划的两种写法。

为什么 31 在二月不触发?

因为没有 2 月 31 日——cron 不会收到最后一天,它就是不匹配。`L` 是表示「当月最后一天」的扩展,前提是你的调度器支持它。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。