工作上有用到这个,第一次听说这个概念,特来学习一下。
所谓Cron表达式,其实就是一个字符串,由6或7个由空格分隔的时间字段组成。
cron表达式的主要功能是能让调度器完成定时任务
先给出一个示例:
0 0/5 14 ?
每天14点到15点每5分钟运行一次,开始于14:00,结束于14:55。
可以看见里面有好几个特殊字符,下面具体说明一下
(1)星号():可用在所有字段中,表示对应时间域的每一个时刻,例如,在分钟字段时,表示“每分钟”,这个其实和正则里相似,个人感觉理解成任意即可。
(2)问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位1符,这个地方的关键字在于这个无意义的值,我的理解是日期和星期存在联系,当你设定了日期之后,其对应的星期几就确定了,譬如13 13 15 20 * ?,这个时候指定了日期,星期就应该使用问号。
(3)’-‘:表示范围,如小时区域使用1-8,就表示定时任务的触发区域为1:00到8:00
(4)’/’:这个应该可以这样理解”开始时间/触发时间间隔”,如在分钟域使用10/5,表示从从10分钟的这个点开始,每5分钟触发一次。
(5)‘,’:表示列出枚举值,如在分钟域使用4,30表示在4分钟和30分钟触发
(6)’L’:表示最后,只能出现在DayofWeek和DayofMonth域,如在星期使用5L,表示在最后的一个星期四触发
(7)‘W’:表示有效工作日(周一到周五),只能出现在DayofMonth域
(8)‘#’:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三