格式
一个 cron 表达式有 6 个或 7 个由空格分隔的时间元素,按顺序依次为:
【秒】 【分】 【时】 【日】 【月】 【周】 【年】
其中【年】可为空
取值
具体取值如下:
- 秒(0~59)
- 分(0~59)
- 时(0~23)
- 日(1~31,要考虑具体的月)
- 月(1~12)
- 周(1~7 或 SUN,MON,TUE,WED,THU,FRI,SAT)
- 年(1970-2099)
序号 | 说明 | 是否必填 | 允许填写的值 | 允许的通配符 |
---|---|---|---|---|
1 | 秒 | 是 | 0-59 | , - * / |
2 | 分 | 是 | 0-59 | , - * / |
3 | 时 | 是 | 0-23 | , - * / |
4 | 日 | 是 | 1-31 | , - * ? / L W |
5 | 月 | 是 | 1-12 or JAN-DEC | , - * / |
6 | 周 | 是 | 1-7 or SUN-SAT | , - * ? / L # |
7 | 年 | 否 | empty 或 1970-2099 | , - * / |
通配符
常用通配符(均以秒举例)
,
特定时刻。比如0,15,45
代表0秒、15秒、45秒触发-
指定范围内每。比如25-45
代表从25秒到45秒每秒触发一次*
每。代表每秒触发一次/
格式为:[初始值]/[偏移量]
,前面的值代表初始值(*
等同0
),后面的值代表偏移量(隔一段时刻后)- 比如
0/20
或者*/20
代表从0秒钟开始,每隔20秒触发1次,即0秒、20秒、40秒各触发1次 - 比如
5/20
代表从5秒开始,每隔20秒触发一次,即5秒、25秒、45秒各触发1次 - 比如
10-45/20
代表在[10,45]内每隔20秒触发一次,即10秒、30秒各触发1次
- 比如
特殊通配符
- 日位的 ?:若明确指定【周】触发,则用
?
表示【日】无意义,以免引起冲突和混乱 - 日位的 L:代表本月的最后一天
- 日位的 W:代表本月内离当天最近的工作日,不能跨月;
- 日位的 LW 连用:代表本月的最后一个工作日
- 周位的 ?:若明确指定【日】触发,则用
?
表示【周】无意义,以免引起冲突和混乱 - 周位的 L:代表周的最后一天
- 周位的 #:格式为:
[星期几]#[第几周]
,某些场景#
可忽略- 比如
2#2
代表本月第二周的星期一 - 比如
5#3
代表本月第三周的星期四 - 比如
6L
代表本月最后一个星期五
- 比如
ps:总结一下特殊通配符的含义:
?
:当前位无意义L
:最后W
:工作日#
:[星期几]#[第几周]
生成工具
附上一个很有意思的生成网站,点击这里