Cron表达式
它是一个由6或7个子表达式组成的字符串。每一个表达式代表一个域,每个域描述了一个单独的日程细节且每个域之间使用空格分隔,它由两种格式组成。
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek
一个Cron表达式至少有6或7个有空格分隔的时间元素,每个时间元素都使用数字,但还可以出现如下特殊字符,他们的含义分别表示:
1.Seconds 秒 (允许值为0-59,允许的特殊符号,- * /)
2.Minutes 分钟 (允许值为0-59,允许的特殊符号,- * /)
3.Hours 小时 (允许值为0-23,允许的特殊符号,- * /)
4.Day-of-Month 月中的天 (允许值为1-31,允许的特殊符号,- * / ? L W C)
5.Month 月 (允许值为1-12或者JAN-DEC,允许的特殊符号,- * /)
6.Day-of-Week 周中的天 (允许值为1-7或者SUN-SAT,允许的特殊符号,- * / ? L C #)
7.Year (optional field) 年(可选的域,允许值为留空或者1970-2099,允许的特殊符号,- * /)
特殊字符含义:
(1) * 表示该域的任意值。如在Minutes域使用*,即表示每分钟都会触发事件。
(2) ? 只能用在DayofMonth和DayofWeek两个域。实际上不会匹配域的任意值,因为DayofMonth和DayofWeek会相互影响。如想在每月的20日触发调度,不管20日是周几,则只能使用如下写法:13 13 15 20 * ?,其中最后一位只能用?,而不能用*,如果使用*表示每月的20号15时13分13秒不管是周几都会触发,实际上不是的。
(3) – 表示范围,如在Minutes域中使用5-20,表示5到20分钟每分钟触发一次
(4) / 表示起始时间开始触发,然后每隔固定时间触发一次。如在Minutes域中使用5/20,表示从分钟数5开始每隔20分钟触发一次,结果25,45,05等分别触发一次。
(5) , 表示列出枚举值。如在Minutes域中使用5,20,则表示5分钟和20分钟每分钟触发一次。
(6) L 表示最后,只能出现在DayofMonth和DayofWeek域。
(7) W 表示有效工作日(周一到周五),只能出现在DayofMonth域中,系统将在离指定日期最近的有效工作日触发事件。另外,W的最近寻找不会跨过月份。
(8) # 用于确定每个月第几个星期几,只能出现在DayofMonth域中。如4#2表示某月的第二个星期四。