Spring定时任务@Scheduled的cron表达式
基本语法
cron表达式由6-7个时间域组成,每个时间域之间用空格隔开。
格式:
<秒> <分> <时> <日期> <月> <星期> <年份>
- 秒:取值范围0-59
- 分:取值范围0-59
- 时:取值范围0-23
- 日期:每月的的几数,0-31
- 月:取值范围1-12,或英文简写JAN-DEC
- 星期:取值范围1~7(其中1从星期天开始) 或英文简写 SUN,MON,TUE,WED,THU,FRI,SAT
- 年份:可选,取值范围1970-2099
通用特殊字符
有四个通用的特殊字符:逗号(“,”),中横线(“-”),星号(“*”)以及斜杠(“/”)。这四个通用特殊字符都可以在所有的时间域里使用。
逗号“,”
逗号用于表示一个时间点列表。
0 0 10,14,16 * * ?
在<时>域处由10,14和16构成的时间列表。表示每天的10点,14点以及16点
中横线“-”
中横线表示一个连续的时间区间。
0 0-5 14 * * ?
在<分>域处,0-5表示0到5分钟。表达式意思是在每天14:00到14:05,每个一分钟触发一次
星号“*”
星号表示任意值,假如在<分>元素使用*, 即表示每分钟都会触发事件。
0 0 12 * * ?
表达式在<日期>和<月>处使用了星号,即每月的每天。这里表示每天中午12点触发。
斜杠“/”
斜杠表示触发的时间间隔,格式为 <起始时间>/<间隔时间>。如在<时>元素处"6-10/2"表示6点到10点,每个2小时触发一次。
"0 0/5 14 * * ?"
在<分>域处使用了斜杠,起始时间为0,间隔时间为5分钟。即在每天下午2点到下午2:55期间的每5分钟触发
<日期>和<星期>特有字符
仅用于<日期>和<星期>的字符:问号(“?”)以及L。
问号“?”
“?”字符仅被用于<日期>和<星期>两个域里,表示不指定值。注意:当这两个域其中一个被指定了值,为了避免冲突,需要将另一个域的值设为“?”
0 15 10 ? * *
在示例里<星期>被指定为任何值,为了避免冲突,在<日期>域需要设置为“?”.
字符L
字符L为last的简写,它表示最后一天。它只能用在<日期>和<星期>两个域里。
0 15 10 L * ?
在<日期>域使用L,<月>域使用了星号,即每月的最后一天。这里表示每月最后一天10:15触发
<日期>特有字符
W为<日期>域特有的字符,表示有效工作日(周一到周五)。系统将在离指定日期的最近的有效工作日触发事件。
W和L结合使用表示某个月最后一个工作日,即最后一个星期五