[转]时间表达式(cron表达式)
Quartz使⽤类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所⽰:
表1 Cron表达式时间字段
[img]dl.iteye/upload/attachment/455480/47c40ebd-551b-3827-ae20-cd0ed4d4a90c.jpg[/img]
星期一到星期日的英文Cron表达式的时间字段除允许设置数值外,还可使⽤⼀些特殊的字符,提供列表、范围、通配符等功能,细说如下:
●星号(*):可⽤在所有字段中,表⽰对应时间域的每⼀个时刻,例如,*在分钟字段时,表⽰“每分钟”;
●问号(?):该字符只在⽇期和星期字段中使⽤,它通常指定为“⽆意义的值”,相当于点位符;
●减号(-):表达⼀个范围,如在⼩时字段中使⽤“10-12”,则表⽰从10到12点,即10,11,12;
●逗号(,):表达⼀个列表值,如在星期字段中使⽤“MON,WED,FRI”,则表⽰星期⼀,星期三和星期五;
●斜杠(/):x/y表达⼀个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使⽤0/15,则表⽰为0,
15,30和45秒,⽽5/15在分钟字段中表⽰5,20,35,50,你也可以使⽤*/y,它等同于0/y;
●L:该字符只在⽇期和星期字段中使⽤,代表“Last”的意思,但它在两个字段中意思不同。L在⽇期字段中,表⽰这个⽉份的最后⼀天,如⼀⽉的31号,⾮闰年⼆⽉的28号;如果L⽤在星期中,则表⽰星期六,等同于7。但是,如果L出现在星期字段⾥,⽽且在前⾯有⼀个数值X,则表⽰“这个⽉的最后X天”,例如,6L表⽰该⽉的最后星期五;
●W:该字符只能出现在⽇期字段⾥,是对前导⽇期的修饰,表⽰离该⽇期最近的⼯作⽇。例如15W表⽰离该⽉15号最近的⼯作⽇,如果该⽉15号是星期六,则匹配14号星期五;如果15⽇是星期⽇,则匹配16号星期⼀;如果15号是星期⼆,那结果就是15号星期⼆。但必须注意关联的匹配⽇期不能够跨⽉,如你指定1W,如果1号是星期六,结果匹配的是3号星期⼀,⽽⾮上个⽉最后的那天。W字符串只能指定单⼀⽇期,⽽不能指定⽇期范围;
●LW组合:在⽇期字段可以组合使⽤LW,它的意思是当⽉的最后⼀个⼯作⽇;
●井号(#):该字符只能在星期字段中使⽤,表⽰当⽉某个⼯作⽇。如6#3表⽰当⽉的第三个星期五(6表⽰星期五,#3表⽰当前的第三个),⽽4#5表⽰当⽉的第五个星期三,假设当⽉没有第五个星期三,忽略不触发;
● C:该字符只在⽇期和星期字段中使⽤,代表“Calendar”的意思。它的意思是计划所关联的⽇期,如果⽇期没有被关联,则相当于⽇历中所有⽇期。例如5C在⽇期字段中就相当于⽇历5⽇以后的第⼀天。1C在星期字段中相当于星期⽇后的第⼀天。
Cron表达式对特殊字符的⼤⼩写不敏感,对代表星期的缩写英⽂⼤⼩写也不敏感。
表2下⾯给出⼀些完整的Cron表⽰式的实例:
[img]dl.iteye/upload/attachment/455482/272a9f8f-5396-3e06-9d6e-53bceb082a3c.jpg[/img]