首先来一个重磅的,根据对cron的了解可以写出一些简单的cron表达式,而针对那些比较复杂的则可以直接使用在线cron表达式生成器来生成相应的cron表达式,地址为http://cron.qqe2.com/
按顺序,以及各个可选的值依次为
秒-Seconds: 0-59 , - * /
分-Minutes: 0-59 , - * /
小时-Hours: 0-23 , - * /
日期-DayofMonth: 1-30(31) , - ? * / L W C
月份-Month: 1-12(JAN-DEC) , - * /
星期-DayofWeek: 1-7(SUN-SAT,注意1=SUN,2=MON) , - * ? / L C #
年-Year:(可选)留空也可以, 1970-2099 , - * /
各个可选值,字段的含义分别为:
*:代表所有可能的值,用在秒上-代表每隔1秒钟触发一次任务;用在分钟上-代表每隔1分钟解发一次任务
-:指定范围,指在某个范围内都要执行,例如若5-20表示从5分钟到20分钟,每分钟触发一次
,:列出枚举??例如用在分钟上,"5,15"表示只在5分钟,20分钟触发任务
/:指定增量??例如用在分钟上,"3/15"表示先从第3分钟触发一次,以后每隔15分钟执行一次,在实际应用中,常常有这样的两种情况,"0/15"与"*/15",实际上这两种表达的意思是一样的,都是每隔15分钟执行一次。
?:表示没有具体的值,使用?要注意冲突
L:表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月的最后一个星期五
W:只能用在月份中,表示最接近指定天的工作日
#:只能用在星期中,用来指定具体的周数,"#"前面代表星期,"#"后面代表本月第几周,比如"2#2"表示本月第二周的星期一,"5#3"表示本月第三周的星期四,因此,"5L"这种形式只不过是"#"的特殊形式而已
C:允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。
参考链接:
1.https://blog.youkuaiyun.com/fanrenxiang/article/details/80361582
2.https://www.cnblogs.com/junrong624/p/4239517.html
3.https://blog.youkuaiyun.com/wh13267207590/article/details/80095128