Quartz之Cron表达式详解
Cron表达式是由6~7个用空格分隔的时间字段来表示的,位置不同代表不同的时间段。详情如表所示:
| 位 置 | 时 间 段 | 值 域 | 允许的特殊字符 |
|---|---|---|---|
| 1 | 秒 | 0~59 | , - * / |
| 2 | 分钟 | 0~59 | , - * / |
| 3 | 小时 | 0~23 | , - * / |
| 4 | 日期 | 0~31 | , - * / ? L W C |
| 5 | 月份 | 0~12 | , - * / |
| 6 | 星期 | 1~7 | , - * / ? L C # |
| 7 | 年(可选) | 空或1970~2099 | , - * / |
从表格的内容可以看出,Cron表达式还是挺灵活的,除了对数值的支持外,还有丰富的特殊字符来提供列表、范围或者通配符的功能。下面对表格的特殊字符的特殊用途做个简单的介绍。
- 逗号(,):枚举列表
– 例如:[小时] 5,6,7 减号(-):区间范围
– 例如:[小时] 5-7,相对于逗号表达式5,6,7星号(*): 表示值域范围的任一时间
– 例如:[小时] 用* 表示每小时斜杠(/):表示步长,格式为x/y,x为起始值,y为增量
–例如:[小时]0/6 执行小时为0,6,12,18的时候问号(?):只在日期和星期里使用,表示无意义的值,相当于占位符
L:只在日期和星期里使用,表示Last,月份表示最后一天,星期表示这个月最后的一个星期几
–注意:这里的星期采用国外的星期,星期一为第一天W:只出现在日期里,表示本月中离该日期最近的工作日
–例如:当前是星期日,离它最近的工作日就是下周的星期一的日期;如果当前是周六,离它最近的工作日就是这周周五的日期;如果本身就是工作日,那么离它最近的工作日就是本身了。
注意:可能会出现跨月的情况,例如1W,而且当前的为星期六,离它最近的工作日不会是上个月的周五的日期,而是这个月的周一。不会跨月LW:表示本月的最后的一个工作日
C: 在日期和星期中使用,表示Calendar,意为计划所关联的日期,如果日期没有关联,相当于日历中所有的日期。
–例如:5C,在日期当中表示5日后的第一天。在星期里面表示星期四后的第一天井号(#):只在星期里使用,表示当月的第几个工作日,格式x#y,x表示星期几,y表示第几个。y如果超过所能表示的日期,会忽略。
–例如:6#7表示这个月的第七个周五,不存在,会被忽略
下面给出一些比较经典的例子:
(1)每天12点执行
0 0 12 * * ?
0 0 12 ? * *
0 0 12 * * ? *
(2)每天12~13点每分钟执行
0 * 12 * * ?
1391



被折叠的 条评论
为什么被折叠?



