Quartz中Cron详解

Posted roostinghawk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz中Cron详解相关的知识,希望对你有一定的参考价值。

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

以上是关于Quartz中Cron详解的主要内容,如果未能解决你的问题,请参考以下文章

Quartz Cron表达式详解

定时任务 Quartz @Scheduled注解中的 cron表达式 详解示例

Quartz job.xml配置的Cron表达式详解

quartz定时任务cron表达式详解

quartz定时任务cron表达式详解

cron表达式详解