任务调度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"则表示"日历中的第一天或者周日以后"。
另外,对于“月份”字段和“周几”字段来说合法的字符不区分大小写。
作者:ThinkWang
出处:http://www.cnblogs.com/ThinkWang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。