Quartz中的cron跟Linux系统的cron定义不太一样(Linux从分开始)
特殊字符:
-
* 用来表示包含一个范围内的任意值. 例如, 分钟位置的“*” 表示 “每分钟”.
-
? 当不特定指代某些值时使用,比如如果是每月10日,这种情况并不关心这个10日是一周的哪一天,就放 ?在周的位置上- 描述范围,比如, 小时位“10-12” 表示 “10点, 11点 和12点”- 描述范围,比如, 小时位“10-12” 表示 “10点, 11点 和12点”
- - 描述范围,比如, 小时位“10-12” 表示 “10点, 11点 和12点”
- , 并列的情况,比如, 周位“MON,WED,FRI” 表示 “周一,周三,周五”.
- / 描述增量, 比如, 秒位 “0/15” 表示 “第0秒, 15秒, 30秒, 和 45秒”. 而 “5/15” 表示 “第5秒, 20秒, 35秒, 和50秒”. 也可以用“-”代替0. 日位 ‘1/3’ 表示“从当月1日开始,每隔三天”.
- L 最后的, 用于日位置表示该月最后一天. 当用于周位置时,若单独用, 表示“7” 或者 “SAT”(星期六);若前面带其它,, it means “the last xxx day of the month” - 比如 “6L” means “这个月最后一个周五”. 也可以用来表示一个月最后几天, 比如 “L-3” 表示当月最后三天.
- W (工作日) - 用来描述某日最近(包含当日)的工作日(周一到周五),注意不能跨月。
The ‘L‘ and ‘W‘ characters can also be combined in the day-of-month field to yield ‘LW‘,
‘LW‘可组合用于日位,意思是当月最后一个工作日
- # (月的第几个周x) 例如, 周位“6#3” 表示 “当月的第三个周五” ;注意如果超出月范围,则不会触发job
月和周的缩写大小写不敏感:MON和mon一样
示例:
注:对于无法用cron实现的情况,可以在代码中额外判断(比如每月的倒数第几天,可以cron设置为每天,程序中判断是否是该月倒数第几天)
参考:
http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontrigger.html