Cron表达式

总结自:https://www.cnblogs.com/javahr/p/8318728.html

 

Cron有两种语法形式:

1、Seconds Minutes Hours DayofMonth Month DayofWeek Year

2、Seconds Minutes Hours DayofMonth Month DayofWeek

即:       秒        分        小时 月份中的日期 月份 星期中的日期 年

 

各字段解析:

字段 允许值 允许的特殊字符
秒(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 , - * /    四个字符

 

 

 

 

 

 

 

特殊字符解析:

* :匹配该域的任意(每个)值。假如在Minutes域使用*, 即表示每分钟都会触发事件。简单列即为“每xx”

?:只能用于日期和星期,且只有一方能用,也是匹配任意值,但指的是符合另一方规则的任意值,相当于我随便,听你的。

备注:日期与星期有天然的冲突,例如如果我相匹配每个月的20号(DayofMonth 20),那么星期该如何处理?‘*’当然不行,这是就得使用‘?’,相当于“每个月20号,随便哪个星期”

-:表示一个范围内的任意(每个)值,如Minutes域使用5-20,表示:从5分到20分钟,每分钟触发一次。

/:表示起始时间开始触发(起始时间也会触发),每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5、25、45....触发

,:枚举出触发时间。例如:在Minutes域使用5,20,则意味着在5和20分触发

L:只能用于日期和星期,表示月/星期的最后一个匹配日(注意不是最后一天),例如:DayofWeek域使用5L,意味着在最后的一个星期四触发

W:只能用于日期,表示最近的工作日,例如:DayOfMonth域使用5W,如果5号是星期日,则匹配到下周的星期一

LW:L与W连用,但并不是概念的结合,而是此月的最后一个工作日。

#:用于DayofWeek,不仅仅表示星期几,能与数字结合,表示某个月的第几个星期几,例如4#2,即某月的第二个星期三

上一篇:来自字符串的Java星期几


下一篇:Cron详解