Cron表达式
前言
最近在看 @Schedule 注解的源码的时候,其中设置定时任务有涉及到 cron 表达式,发现自己只会一丢丢~
然后自己去详细了解 并 玩了一下这个 cron 表达式,记录一下,也更方便自己掌握。
Cron表达式
cron 表达式,是一个字符串,由 6
个空格、7
个域组成,每一个域代表一个时间含义
有以下两种语法格式:(一般 Year 可以省略,所以常见的为下面的第二种方式)
Seconds Minutes Hours Day Month Week Year
Seconds Minutes Hours Day Month Week
具体说明:
名称 | 秒 | 分钟 | 小时 | 日 | 月 | 星期 | 年 |
---|---|---|---|---|---|---|---|
取值 | 0-59 | 0-59 | 0-23 | 1-30(31) | 1-12 | 1-7 | 1970-2099 |
通配符 | , - * / | , - * / | , - * / | , - * / ? L W | , - * / | , - * / L # | , - * / |
通配符说明:
-
,
:列举出触发的值 -
0,10 * * * * *
:每分钟的第0s、10s触发 -
最近触发时间
2022-04-21 15:47:00
2022-04-21 15:47:10
2022-04-21 15:48:00
2022-04-21 15:48:10 -
-
:指定具体范围-
1-5 * * * * *
:每分钟的第1s、2s、3s、4s、5s触发(即 1-5s 触发) -
最近触发时间:
2022-04-21 15:48:01
2022-04-21 15:48:02
2022-04-21 15:48:03
2022-04-21 15:48:04
2022-04-21 15:48:05
2022-04-21 15:49:01
2022-04-21 15:49:02
2022-04-21 15:49:03
2022-04-21 15:49:04
2022-04-21 15:49:05
-
-
*
:所有的值都包括-
* * * * * *
:每分钟每秒都触发 -
最近触发时间
2022-04-21 15:47:55
2022-04-21 15:47:56
2022-04-21 15:47:57
2022-04-21 15:47:58
2022-04-21 15:47:59
2022-04-21 15:48:00
-
-
/
:指定增量-
3/10 * * * * *
:从第3s开始,每隔10s 执行一次 -
最近触发时间
2022-04-21 15:48:23
2022-04-21 15:48:33
2022-04-21 15:48:43
2022-04-21 15:48:53
2022-04-21 15:49:03
-
-
?
:表示不指定(注意冲突) -
L
:表示last,月份中表示最后一天31或30,星期3L表示本文最后一个星期三-
0 0 0 L * ? *
:本月最后一天的0时0秒(凌晨)触发 -
最近触发时间
2022-04-30 00:00:00
2022-05-31 00:00:00
2022-06-30 00:00:00
2022-07-31 00:00:00
2022-08-31 00:00:00
-
-
W
:只能用在日中,表示最接近指定天的工作日-
0 0 0 2W * ? *
: 每月 2 号最近的那个工作日 -
最近触发时间
2022-05-02 00:00:00
2022-06-02 00:00:00
2022-07-01 00:00:00
2022-08-02 00:00:00
-
-
#
:只能用在星期中,表示这个月的第几个周几,例如1#1表示这个月的第1个周1
其实各个使用还有一些各个时间设置冲突问题需要注意,具体使用可以在下面的网站上编辑验证可以再然后使用:
一些例子:
0 * * * * ? 每1分钟触发一次
0 0 * * * ? 每天每1小时触发一次
0 0 10 * * ? 每天10点触发一次
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 30 9 1 * ? 每月1号上午9点半
0 15 10 15 * ? 每月15日上午10:15触发
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0 0 1 * ? 每月1号凌晨执行一次
相关阅读: