Quartz-Cron Expression 使用介绍

  • 介绍

    cron是Unix/Linux系统工具,有很强的任务调度能力,Quartz的CronTrigger触发器就是建立在cron的基础上.

  • 格式说明

    一个cron Expression(克龙表达式)是由6或7个字段以空格分隔的字符串,每个字段包含一些允许的值或允许的特殊字符(具体见下表),    


字段 必要 容许值 容许的特殊字符
Seconds(秒) 0-59 -*/
Minutes(分) 0-59 -*/
Hours(时) 0-23 -*/
Day of month(日) 1-31 -*?/LW
Month(月) 1-12或JAN-DEC -*/

Day of week(星期)

1-7或SUN-SAT -*?/L#
Year(年) 空值,1970-2099 -*/

    

  • 特殊字符说明

    *:所有值,用来选择某个字段的所有的值,例如'*'用在分钟字段上,意味着每一分钟(包含0-59所有值)

    ?:没有具体的值,举例说明,在每月的10号出发任务,在Day of month(日)字段上设置值为10,但是我不关心那一天星期几,那么在Day of week(星期)字段上设置'?'.

    -:用来标识一个范围,例如在Hours(时)字段上设置'10-12',意味着在10点,11点和12点.

    ,:用来标识附加的值,例如在Hours(时)字段上设置'10,12,14',意味着在10点,12点和14点.

    /:用来标识值的递增,例如在Seconds(秒)字段上设置'0/15',意味着在第0秒,第15秒,第30面,第45秒.'/'左边为初始值,右边为递增值.

    L:在日期和星期字段中,L有不同的含义,在日期字段中L标识月的最后一天,在星期字段中标识星期的最后一天(7或者SAT),另外,在星期字段中,L放置在一个数值后,后其他含义,比如'6L',意味着一个月中最后一个星期五.在日期字段中'L'可以用来标识最后一天的一个偏移量,例如'L-3',标识一个月的倒数第三天.(注意,这个时候'-'字符标识的不是一个范围).

    W:可以理解为工作日,使用在日期字段中,标识给定日期中,最近的工作日(星期-到星期五)触发.比如'15W',如果15号是星期六,则在14号(星期五)触发,如果15号是星期天,则在16号(星期一)触发.如果15号是星期二,则在15号星期二触发.如果你指定'1W',1号是星期六,那么将在3号星期1触发(是不会跨月找工作日的);'W'字符标识的是指定的一天,不能标识一个范围.'W'和'L'字符结合使用,像这样'LW',标识一个月中最后一个工作日.

    #:用在星期字段,标识一个月中第几个星期几,例如'6#3'标识一个月中第3个星期五,'2#1'标识一个月中第一个星期一,'4#5'标识一个月中第5个星期3(等等,一个月中有可能有第5个星期三吗,永远不会,所以,这个是永远也不会触发的).

另外合法的字符,是不区分大小写的,MON和mon是一样的.

  • 示例
  1.     **Expression**                    **Meaning**
  2.     0 0 12 * * ?                          每天12点触发
  3.     0 15 10 ? * *                        每天10:15am 触发
  4.     0 15 10 * * ?                        每天10:15am 触发
  5.     0 15 10 * * ? *                     每天10:15am 触发
  6.     0 15 10 * * ? 2005               2005年的每天10:15am 触发
  7.     0 * 14 * * ?                          每天的下午2点到2点59分的每分钟触发
  8.     0 0/5 14 * * ?                      每天的下午2点到2点55分钟,每5分钟触发一次
  9.     0 0/5 14,18 * * ?                 每天的下午2点到2点55分钟和下午6点到6点55分钟,每5分钟触发一次
  10.     0 0-5 14 * * ?                      每天下午2点到2点05分钟的每一分钟触发一次
  11.     0 10,44 14 ? 3 WED             3月的每个星期3的下午2点10分和下午两点44分钟触发
  12.     0 15 10 ? * MON-FRI           每周一到周五的上午10点15分钟触发
  13.     0 15 10 15 * ?                     每月的15号的上午10点15分钟触发
  14.     0 15 10 L * ?                       每月最后一天的10点15分钟触发
  15.     0 15 10 L-2 * ?                    每月倒数第二天的10点15分钟触发
  16.     0 15 10 ? * 6L                     每月最后的星期5的10点15分钟触发
  17.     0 15 10 ? * 6L 2002-2005  2002,2003, 2004 and 2005年的每月最后的星期5的10点15分钟触发
  18.     0 15 10 ? * 6#3                 每月的第3个星期五的10点15分钟触发
  19.     0 0 12 1/5 * ?                    每月1号开始,每5天的中午12点触发.
  20.     0 11 11 11 11 ?                  每个11月11号的11点11分钟触发.


在日期和星期字段中注意'?'和'*'的效果

介绍内容来自Quartz的官方文档.


你可能感兴趣的:(cron,expression,cron表达式,克龙表达式)