Cron表达式
本文翻译自:
http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html
1.简介
Cron作为一个Unix工具,已经存在很长一段时间了,用于实现任务调度的功能。CronTrigger类基于Cron而来。
CronTrigger使用Cron表达式创建任务调度,比方说“每周一到周五的8:00”或者“每个月最后一个周五的下午1:30”。
2.格式
Field Name | Mandatory | Allowed Values | Allowed Special Characters |
Seconds | yes | 0-59 | ,_*/ |
Minutes | yes | 0-59 | ,_*/ |
Hours | yes | 0-23 | ,_*/ |
Day Of month | yes | 1-31 | ,_*?/LW |
Month | yes | 1-12 or JAX-DEC | ,_*/ |
Day of Week | yes | 1-7 or SUN-SAT | ,_*?/L# |
Year | no | empty,1970-2099 | ,_*/ |
简单的Cron表达式可以简单到:* * * * ? *
复杂的表达式可以如: 0/5 14,18,3-39,52 * ? HAX,MAR,SEP MON-FRI 2002-2010
3.特殊字符
- * (所有值):用于选择该字段的所有可选值,如果在Minuate位则表示每分钟
- ? (非指定的值):当在某些字段需要指定一些值而其他字段不指定时使用。比方说想在一个月的第10天触发,而不关心这天是一周的第几天,则可以在第4位写10而第6位放“?”。
- - :用于定义范围:第三位写“10-12”指10点、11点、12点。
- , :用于指定其他值。比方说,“MON,WED,FRI”在第6位,表示每周一、周三、周五
- / :用于指定增量。比方说在第1位写"0/15”表示第0、15、30和45秒,而“5/15”表示第2、20、35和50秒。
- L (last):在不同的字段含义不同,在第4位表示每月的最后一天,单字符在第6位表示“7”或者"SAT"。如果在其他字符后,比方说“6L”在第6位表示“当月的最后一个周五”。也可以指定偏移量,比方说“L-3”表示倒数第3天。
- W(周):用于指定给定日期最近的工作日。比方说,在第4位指定“15W”表示“月份中的的第15天最近的工作日”,如果第15天是周日则会在16号触发,如果是周六则在14号触发,如果是工作日则在当天触发。但是需要注意的是,如果设置的是“1W”而第1号是周六,那将在3号触发,即触发是不能跨月的。'W'字符只能用于 ‘day-of-month’是单个一天时,而不能是连续的日期。 'L'和'W'字符经常组合在一起使用‘LW’,表示‘这个月的最后一个工作日’。
- #:用于指定月份中的第几天。比方说,‘6#3’在‘day-of-week’表示这个月的第三个周五(国外周日是第一天)。
4.示例
表达式 | 含义 |
0 0 12 * * ? | 每天的中午12点触发 |
0 15 10 ? * * | 每天的10:15触发 |
0 15 10 * * ? | 每天的10:15触发 |
0 15 10 * * ? * | 每天的10:15触发 |
0 15 10 * * ? 2005 | 2005年每天的10:15触发 |
0 * 14 * * ? | 每天的14:00到14:59的每个整分钟触发 |
0 0/5 14 * * ? | 每天的14:00到14:55中每5分钟触发一次 |
0 0/5 14,18 * * ? | 每天的14:00到14:55中每5分钟触发一次,18:00到18:55中每5分钟触发一次 |
0 0-5 14 * * ? | 每天的14:00到14:05中每分钟触发一次 |
0 10,44 14 ? 3 WED | 3月份的每个周三,在下午的14:10和14:44触发 |
0 15 10 ? * MON-FRI | 每个周一、周二、周三、周四、周五的上午10:15触发 |
0 15 10 15 * ? | 每个月的第15天的10:15触发 |
0 15 10 L * ? | 每个月最后一天的10:15触发 |
0 15 10 L-2 * ? | 每个月的倒数第三天的10:15触发 |
0 15 10 ? * 6L | 每个月的最后一个周五的10:15触发 |
0 15 10 ? * 6L 2002-2005 | 在2002、2003、2004、2005年的每个月的最后一个周五的上午10:15触发 |
0 15 10 ? * 6#3 | 每个月的第3个周五的上午10:15触发 |
0 0 12 1/5 * ? | 在每个月的第一天开始,每隔5天的中午12点触发 |
0 11 11 11 11 ? | 每年的11月11号的上午11:11触发 |
5.备注
菜鸟一枚,但有一颗不断进取的心;
兴趣所至,相信自己终会成功!!!!!
加油,imstrive