Cron 表达式使用教程
一、Cron 基础结构
低代码平台标准 cron 为 6 位时间字段,无命令域,格式:
Seconds Minutes Hours Day Month Week
秒 分 时 日 月 星期字段对照表
| 字段序号 | 字段名称 | 含义 | 合法取值范围 | 补充说明 |
|---|---|---|---|---|
| 1 | Seconds | 秒 | 0 ~ 59 | |
| 2 | Minutes | 分钟 | 0 ~ 59 | |
| 3 | Hours | 小时 | 0 ~ 23 | 24 小时制 |
| 4 | Day | 日期 | 1 ~ 31 | 每月几号 |
| 5 | Month | 月份 | 1 ~ 12 | 1=1 月,12=12 月 |
| 6 | Week | 星期 | 1 ~ 7 | 1=周一,7 = 周日 |
二、通用特殊符号完整定义
所有字段均可使用以下符号,规则统一:
*:通配符,匹配当前字段全部取值,代表「每」
- 例:
*放在秒位 = 每一秒
- 例:
/:间隔步长,格式
起始值/间隔,代表每隔 N 单位执行
- 规范:前缀搭配
*使用,*/5= 每 5 个单位 - 示例:
*/10秒 = 0、10、20、30、40、50 秒触发
- 规范:前缀搭配
-:连续区间,指定一段连续数字范围
- 示例:
9-18小时 = 9 点至 18 点每小时都匹配
- 示例:
,:离散多值,逗号分隔多个独立数值
- 示例:
1,5,10分 = 第 1、5、10 分钟触发
- 示例:
?:无指定值,
仅用于日期 (Day)、星期 (Week)
,二者互斥只能一个填
?- 核心规则:日期和星期不能同时有具体数字,一个赋值另一个必须写
?
- 核心规则:日期和星期不能同时有具体数字,一个赋值另一个必须写
L:Last,仅日期、星期可用
- 日期
L:当月最后一天;5L:当月最后一个周五 - 星期
L:周六
- 日期
W:工作日(周一至周五),仅日期字段,就近匹配工作日
15W:每月 15 号最近的工作日,若 15 号为周末则顺延 / 提前
#:第 N 个星期,仅星期字段
2#3:每月第三个周二
三、高频标准表达式示例
1. 按秒 / 分钟高频执行
- 每秒执行:
* * * * * ? - 每 5 秒执行:
*/5 * * * * ? - 每分钟整分执行(0 秒触发):
0 * * * * ? - 每 10 分钟:
0 */10 * * * ? - 每小时第 5、15、25 分钟:
0 5,15,25 * * * ?
2. 按小时执行
- 每 2 小时整点:
0 0 */2 * * ? - 9 点~18 点每小时执行:
0 0 9-18 * * ?
3. 每日定时
- 每天凌晨 0 点整:
0 0 0 * * ? - 每天早上 8 点 30 分 0 秒:
0 30 8 * * ? - 每天 23 点 59 分:
0 59 23 * * ?
4. 每周定时
- 每周一早上 10 点:
0 0 10 ? * 1 - 每周五 17 点 30 分:
0 30 17 ? * 5 - 每周日零点:
0 0 0 ? * 7
5. 每月定时
- 每月 1 号早上 10 点:
0 0 10 1 * ? - 每月最后一天 20 点:
0 0 20 L * ? - 每月第三个周三 15 点:
0 0 15 ? * 3#3
6. 每年定时
- 每年 10 月 1 日 10 点整:
0 0 10 1 10 ? - 每年 8 月 8 日 20 点:
0 0 20 8 8 ?
四、关键使用约束
日期 (第 4 位) 和 星期 (第 6 位) 互斥规则
场景 1:指定每月几号执行 → 星期位填
?例:每月 5 号 14 点:
0 0 14 5 * ?场景 2:指定周几执行 → 日期位填
?例:每周三 9 点:
0 0 9 ? * 3禁止写法:
0 0 10 5 * 3(同时指定日期 + 星期,表达式失效)
6 个字段必须全部填写,不可省略;无限制条件统一用
*/?填充?仅能出现在第 4、6 位(日、星期),秒 / 分 / 时 / 月不允许使用?符号
L/W/#仅支持日、星期字段,秒分时月不可使用