任务调度Quartz框架中 时间跨度表达式cron-expression

项目中用到任务调度Quartz框架,对它的时间跨度表达式cron-expression一直不是很明白,因此从网上搜索了下资料,现在整理了一下,与大家分享。

Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下:

字段名 允许的值 允许的特殊字符
0-59 , - * /
0-59 , - * /
小时 0-23 , - * /
1-31 , - * ? / L W C
1-12  或 JAN-DEC , - * /
周几 1-7 或 SUN-SAT , - * ? / L C #
年 (可选字段) 空 或1970-2099 , - * /


'*' 字符可以用于所有字段,代表“每一个”的意思。

例如 在“分”字段中"*"表示"每一分钟"的含义。


'?' 字符可以用在“日”和“周几”字段. 它用来指定 '不明确的值'.

例如 我们在“日”中已经制定过值了,不必要在“周”字段中再指定值,这个时候,我们可以在“周”字段上写'?' 字符

 

'-' 字符被用来指定一个值的范围。

例如 在“小时”字段中设为"10-12"表示"10点到12点".

',' 字符指定数个值。

例如 在“日”字段中设为"1,15,25"表示在1号,15号,25号.


'/' 字符用来指定一个值的的增加幅度.

例如 在“秒”字段中设置为"0/15"表示"第0, 15, 30, 和 45秒"。而 "5/15"则表示"第5, 20, 35, 和 50".。


'L'字符可用在“日”和“周几”这两个字段。它是"last"的缩写, 但是在这两个字段中有不同的含义。

例如 在“日”字段中的"L"表示"一个月中的最后一天" 。而在“周几”字段中, 它简单的表示"7" or "SAT",但是如果在“周几”字段中使用时跟在某个数字之后, 它表示"该月最后一个星期×" 。


'W' 可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五) 。

例如 你将“日”字段设为"15W",代表: "离该月15号最近的工作日"。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日, 触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。'W'字符只能用于“日”字段的值为单独的一天而不是一系列值的时候。

'#' 字符可用于“周几”字段。该字符表示“该月第几个周×”.

例如 "6#3"表示该月第三个周五( 6表示周五而"#3"该月第三个)。

 

'C' 字符可用于“日”和“周几”字段,它是"calendar"的缩写。它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历, 那它等同于包含全部日历。

例如 “日”字段值为"5C"表示"日历中的第一天或者5号以后",“周几”字段值为"1C"则表示"日历中的第一天或者周日以后"。

另外,对于“月份”字段和“周几”字段来说合法的字符不区分大小写。

posted @ 2013-04-24 14:17  ThinkWang  阅读(1903)  评论(3编辑  收藏  举报