cron表达式可以是6位或7位,以下是七位字符的含义
字段 | 允许值 | 允许的特殊字符 |
秒(Seconds) | 0~59的整数 | , - * / 四个字符 |
分(Minutes) | 0~59的整数 | , - * / 四个字符 |
小时(Hours) | 0~23的整数 | , - * / 四个字符 |
日期(DayofMonth) | 1~31的整数(根据月份变化) | ,- * ? / L W C 八个字符 |
月份(Month) | 1~12的整数或者 JAN-DEC | , - * / 四个字符 |
星期(DayofWeek) | 1~7的整数或者 SUN-SAT (1=SUN) | , - * ? / L C # 八个字符 |
年(可选,留空)(Year) | 1970~2099 | , - * / 四个字符 |
*
该符号表示所有,如给秒设置*就是0到59秒都会执行
,
你可以把这个符合看为或,比如a,b,c,就是a或b或c
如给分设置为3,20,45,那么他就会在3分钟,20分钟,45分钟时执行
只有一位数也是一样的
-
该符合表示范围,如给秒设置20-22,那么20秒,21秒,22秒都会执行
/
这是一个很容易理解的符号,我们可以把它转化为另一个表达式
如有:a/b,我们可以看成:n*b+a(其中n是在任意正整数,和不能超过规定范围)
比如给秒设为:2/12 ,也就是n*12+2,那么它的执行规律是这样的:2,14,26,38,50(不超过秒的最大值59)
#
这个符号只能用在星期,它表示一个月中的第几个星期几(1表示星期日,7表示星期六)
如给星期设置为2#3(注意此时日期必须为?
),他就是第三个星期一
L
该符合表示最后,只能用在日期和星期(也就是只能用在天数上)
如果是用在日期上,则在一个月的最后一天执行
如果用在星期上,则在周六执行
W
改符号只能在日期中使用,并且只能配合数字使用,如nW(其中n表示当前月的日期,超出当前月天数会报错)
nW用来寻找指定日期最近的工作日
如3W:
如果当前月份的3日是星期六,则在2日(星期五)执行
若是星期日,则在4日(星期一)执行
周一至周五,则直接执行
不跨月
如1W:
若当前月份的1日是星期六,则在3日(星期一)执行
对于月末也是如此的
LW
用在日期中,表示当月最后一个工作日
?
其实在表达式中日期和星期是重复的,但又是两个不同的概念,为了区分这两个冲突的概念,所以有了?
因为冲突,所以在表达式中不能够同时设置日期和星期,它们两个必须有一个是?
也就是说在设置日期时星期为?
,在设置星期时日期为?
C