本文翻譯自:
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.備注