cron 表达式

来源:互联网 发布:淘宝上的胆前级哪个好 编辑:程序博客网 时间:2024/06/07 12:45


cron表达式是用来配置spring定时任务执行时间的字符串,由5个空格分隔成的6个域构成,格式如下:


{秒}  {分}  {时}  {日}  {月}  {周}

每一个域的含义解释:
1)秒:表示在指定的秒数触发定时任务,范围0-59。例如,"*"表示任何秒都触发,"0,3"表示0秒和3秒触发。
2)分:表示在指定的分钟触发定时任务,范围0-59。例如,"0-3"表示0分钟到3分钟每分钟都触发,"0/2"表示只有偶数分钟触发。
3)时:表示在指定的小时触发定时任务,范围0-23。例如,"3-15/2"表示上午3点到下午3点每隔2个小时触发。
4)日:表示在指定的日期触发定时任务,范围1-31(可以写0,但不会生效)。例如,"1"表示1号出发,"5,15"表示5号和15号出发。需要注意的是,日期可以写0,不会报错但也不会生效。
5)月:表示在指定的月份触发定时任务,范围1-12。例如,"1-4,12"表示1月到4月以及12月触发。
6)周:表示在指定的星期触发定时任务,范围0-7(0和7都表示周日)。例如,"?"表示一周都触发,"6,7"表示周六日触发。
注意,1月到12月可以用对应的英文缩写JAN-DEC代替,周日到周六可以用对应的英文缩写SUN-SAT代替。但是,周日的缩写SUN只会被替换为0,因此在cron表达式的周域,我们可以写6-7,却不能写SAT-SUN。

表1-1总结了cron表达式中域的范围和可能出现的特殊符号:

  表1-1

范围
特殊字符
是否必需
0-59
, - * /
Y
0-59
, - * /
Y
0-23
, - * /
Y
1-31
, - * / ?
Y
1-12或JAN-DEC
, - * /
Y
0-7或SUN-SAT
, - * / ?
Y

特殊字符的含义说明如下:
1)"*":匹配该域的任意值,例如在日域上使用"*",则表示每天都触发该定时任务。
2)"?":只能在日和周域使用,表示非明确的值,实际作用等同"*",即匹配任意值。一般在日和周上会出现一次,当然,如果你对日和周两个域都使用"?"或者都使用其他值也没什么问题。
3)"-":表示范围,例如在分域上使用5-10表示从5分钟到10分钟每分钟触发一次。
4)"/":表示起始时间触发一次,然后每隔固定时间触发一次。例如,在分钟域使用"10/2"表示从10分钟开始每隔2分钟触发一次,直    到58分钟。也可以和字符"-"连用,例如在分钟域使用"10-30/2"表示从10分钟开始每隔2分钟触发一次,直到30分钟。
5)",":表示枚举多个值,这些值之间是"或"的关系。例如,在月份上使用"1-3,10,12"表示1月到3月,10月,12月都触发。

下面是一些cron表达式和对应的含义:
"0 15 10 ? * *"  每天上午10:15触发
"0 0/5 14 * * ?"  在每天下午2点到下午2:55期间的每5分钟触发
"0 0-5 14 * * ?"  每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED"  三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI"  周一至周五的上午10:15触发

“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 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发 
“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发 
“0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发 
“0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发 
“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发 
“0 15 10 15 * ?” 每月15日上午10:15触发 
“0 15 10 L * ?” 每月最后一日的上午10:15触发 
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发 
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发 
“0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发 

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次:0 0 1 1 * ?

每月最后一天23点执行一次:0 0 23 L * ?

每周星期天凌晨1点实行一次:0 0 1 ? * L

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

每隔5分钟执行一次:0 0/5 * * * ?


原创粉丝点击