cron表达式学习
在项目中要使用quartz做定时任务,用到了cron表达式,因此学习总结一下。
cron
cron应该是源自Linux。定时任务,让系统有规律的执行某项任务。
cron表达式
Linux的cron表达式和quartz略有不同,这里只说quartz的cron表达式。
cron表达式由5或者6个空格隔开,形成6或者7个域。其中域的含义为:
秒 分 时 日 月 周 年
其中年是可以省略的。
-
取值范围:由域的含义其实可以知道一些值的取值范围,例如秒、分的取值范围是0-59,时为0-23,月为1-12,周为1-7** (需要注意的是,这里的1并不是周一而是周日) **
-
可以出现的符号
-
*:星号代表所有可能的值,如秒为*,意味着每秒都执行
-
-:代表范围,如秒为1-10,代表从1秒到10秒,每秒钟执行一次
-
?:出现在日和周,日其实是dayOfMonth,周其实是dayOfWeek,从中可以看出,每月的第几天和每周的第几天很大概率是不在一起的。所以当设置了dayOfMonth后,dayOfWeek就需要设置为?而不是*;反之也成立。
-
/:其含义为:开始执行时间/间隔时长,如秒为5/20意为5秒钟执行一次,然后每隔20秒钟再执行一次(即25,45)
-
,:枚举。如秒为1,23,4意思是分别在1秒、23秒、4秒各执行一次
-
#:只能出现在日(dayOfMonth),如4#2意为某月的第二个星期三。
-
L:表示最后,只能出现在日(dayOfMonth)和周(dayOfWeek),意味Last。如5L在周:每月的最后一个星期四;若5L在日则代表每年的12月5号(???)
-
W:待补充
-