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.备注

 

 

 

 

 

 

posted @ 2018-11-19 19:48  imstrive  阅读(6294)  评论(0编辑  收藏  举报