笑话/quartz定时任务cron表达式详解
cron表达式用于配置cronTrigger的实例U9270jaklu1cE。c8C17565lcron表达式实际上是由七个子表达式组成vJfUt。1BhV98i这些表达式之间用空格分隔DXNDW9ZON。g103yH 1.Seconds (秒) 2.Minutes(分) 3.Hours(小时) 4.Day-of-Month (天) 5.Month(月) 6.Day-of-Week (周) 7.Year(年) 例boV7MqbH07D:VA1h8r3"0 0 12 ? * WED” 意思是SgN7f5m2g8R5w9:dD4k3WeXHis4qz每个星期三的中午12点执行c21lp0423u。0MY1kfSD 个别子表达式可以包含范围或者列表It0L42cy。YX8L8例如m38x7LVVzI8:bt97LyTGvP上面例子中的WED可以换成"MON-FRI"o8iF3YPB883V,4KO4uA"MON65QN6iNMFPhkw,1a8xLUWEDjy7S7TtJo,L5046NHgi0037aFRI"v0S6N5Orn0JW2Q,COC8dzW甚至"MON-WEDr6zFKLR2TXF74,whP2whwmN1SAT"zPvdT。7e0FDEV 子表达式范围EUCD23OR:bfUKhiSB33LR 1.Seconds (0~59) 2.Minutes (0~59) 3.Hours (0~23) 4.Day-of-Month (1~31C07eFcE87t8,2r0vxFmO5ZfY9但是要注意有些月份没有31天) 5.Month (0~11LFQ0H1f60TzxG,9VAqMRuK9或者"JANIChBx027KHUki,05NNwnFJDdf1r0 FEBBT1Wu92,agMai40B9nlQ MAR66RXQu,v64B3 APR2Zb7oheN,EHX5g MAYM0F15DLAQ5dXx,qN43OH2WUfCA6J JUN86qXerbr8I5y,5jirtPu05dxC JULw78Ve2VZGX0kLd,14c14jSgIX1AAx AUGP8A97Yz2rr7cR,dkOxjal3vavP9 SEPGGC6e0,5uZDqub3 OCTb3vMVT9,kHP5sa NOVZkoWUcUV,cw9SvynVrDEC") 6.Day-of-Week (1~74YPYqJNiBIk5U,VB82tVai7Uj31=SUN 或者"SUNHc86aoX,5X3R85t268Ka MONXY2yR5RgP7Kjwm,8HSle8J7351 TUECKU16N,8hS8d8f WEDV8rhj,18w35u2Qk THUzZuEZ,210679kZKTqjv FRIV5c0s5jO,7X3Q726 SAT”) 7.Year (1970~2099) Cron表达式的格式Lk59tc9Zl0I:2Y4yZ46a秒 分 时 日 月 周 年(可选)8m9ZDu。NjLSJ 字段名 允许的值 允许的特殊字符 秒 0-59 1T9X2B,T5yDW72FRq53K - * / 分 0-59 XCV9O,ZYljJUek12U3bK - * / 小时 0-23 bO4nXUa2h5rifn,TqPVN0h - * / 日 1-31 1s6ihw89,O713N7 - * ? / L W C 月 1-12 or JAN-DEC Dy7Aq91dTMkMa,g78fmWQpyY6u - * / 周几 1-7 or SUN-SAT 1F0D6,41Y3t3204vx - * ? / L C # 年(可选字段) empty 1970-2099 8A3MwM0l,Dyq2b4Z - * / 字符含义VWjD1IE3I:Skxb8Q * t2qYF6TnHZC:gwSRAfLhHvgw4F代表所有可能的值6ej05W。8U63i42因此MdN6UIyP20j,42e0408“*”在Month中表示每个月28y5IS2qE,F7lREE4yKE7在Day-of-Month中表示每天c78Zdp4F85,mv61ub455265l在Hours表示每小时 - 6BpmydmpG152tM:Q0Qflmv4ELW8YL表示指定范围z265Jyc。O3m3vIvJ 2Dv88h5zk8KcW,d3X251 ZjADU:lztnltGT表示列出枚举值m315K。l8syu例如vsbPcj3u:5Vn13H6G4T03在Minutes子表达式中4z5e1y1R,YLrx8sql“51wX92YR2hkuplY,C6g0t8RF20”表示在5分钟和20分钟触发GArqu。8mV3AFrFqka8 / U5Wu0fMLp960P6:e3V2L9q被用于指定增量8Oq5nBp8YFBmT。fG8NH05Z533例如vG2Vt728f9Px:q5mrr5y在Minutes子表达式中GZqJuf,6TEb7ti7tc4“0/15”表示从0分钟开始Fs4x3cq9,t7qBG4wodduNX每15分钟执行一次3rFPZ77Nh3BjnW。30wHWqtIccGMrA"3/20"表示从第三分钟开始iSK6H,hcq37aXKA每20分钟执行一次1CfdGJejMs6。6Uh5B和"35UI4K4790K4,QFHy923t305QB2ua8pj2,N77644vjS7iV43"(表示第3IMQc3,5RCG1BJHYNn0234r3Atj0l,lV655CA243分钟触发)的含义一样3I3bqe5oQLhVfm。6HlU2lT6h35wV ? mn7IFofIT4RuTT:34bxV8用在Day-of-Month和Day-of-Week中752S3u3Fjz,ghQ1dxWS12If指“没有具体的值”kBLg4。tasy43当两个子表达式其中一个被指定了值以后hkP4K1owfbX,E80E10YSoo为了避免冲突L6ZP5,chCS4y4aoN6II需要将另外一个的值设为“?”IrRn1bK3Vuv。VL52U4Xot7yd例如30bjhwY:9w9kVo3p想在每月20日触发调度Bii6xtzF,oiEmXE不管20号是星期几1z24B5H2hL6Qp,jr9j8只能用如下写法6XspE42m:S477Z8pzB2z0q0 0 0 20 * ?BC1kUnNt9i,Sk2YQg93b其中最后以为只能用“?”v83T2pG,DoJafFq5QNDI7E而不能用“*”a3cc1TT8RrS36l。sobImcoy9gev17 L 1Erj5c:UUi175EH用在day-of-month和day-of-week字串中P7ZPx7t3XK3。cOA01zIZ它是单词“last”的缩写8wX212BRcS8。5i7iKv6e62S1它在两个子表达式中的含义是不同的oOx4q99PUqo。Gu6GTc0jlmZf 在day-of-month中Iz2x7k4,0sn1CdM0Jk7“L”表示一个月的最后一天1AE8wzf,h0plFVk4s3一月31号J5Kua9wq5bNs,5rO3d1A8W0nYN3月30号alN1qlf。6hB5m4sv4 在day-of-week中7ziIl,7184szxnah8“L”表示一个星期的最后一天KvidY5ST37tc,2unhI7of6Qf6也就是“7”或者“SAT” 如果“L”前有具体内容O1jaj2S0b81m,30XbDcexV它就有其他的含义了4akOkz4。aHbUWWvDPZhK例如9tmj6765B598M:Fql39zO0vfZ8b7“6L”表示这个月的倒数第六天6o2uS2IMOPQBQ。7E940JDjF05“FRIL”表示这个月的最后一个星期五9etrl2r。G7kN7Mdl 注意J79r13xfx2D8vV:IU9X33j46VI在使用“L”参数时8J1FhoEb1ASH5,i3ARpV2不要指定列表或者范围jq8e87W,8XyUl7cNTuvPN这样会出现问题VuMZBl。xc2nGV9J19A W 6Jc2zy4eNg:zmaO3“Weekday”的缩写kA99Nl6。l8LEhD4vT0q14只能用在day-of-month字段2Gpg53o6WNvUi。4gzUV0yBGA9Dp用来描叙最接近指定天的工作日(周一到周五)1K6M8V。r4d3oT6例如39d47g:ve62X38p1V5c在day-of-month字段用“15W”指“最接近这个月第15天的工作日”d62szGF48a,0zE8w96y3y5hN即如果这个月第15天是周六Jsa0lS442r,5ahcqaWQd那么触发器将会在这个月第14天即周五触发rjs7FGZh;hQoS216AN6如果这个月第15天是周日aPygeD7m5mSK1,0Y9I2pl那么触发器将会在这个月第 16天即周一触发3Cc76;UWRSnc如果这个月第15天是周二5TNG2r1,56lRf60CStzDly那么就在触发器这天触发1qShcb。N8Yi6ng97Q注意一点S4SO14XO2X:1tC90vngN4Hi这个用法只会在当前月计算值EDq0cVX,V1p679bjvr4不会越过当前月KNrrvH76。QyHDWZZ“W”字符仅能在 day-of-month指明一天Wg5M4WbvR3I6t,545Z04fJ8f1k不能是一个范围或列表tOn783etMXZII。u7I9Lnwc也可以用“LW”来指定这个月的最后一个工作日sbP95zk13,6G4WQ29a即最后一个星期五v4ujK2d。1KU6oLvU # vxOy0:8Z8U9102只能用在day-of-week字段pwrH8Ghmo8。sB1Hvu8CUS81用来指定这个月的第几个周几b2X58VO94SF8Dy。r1l7eTpeoc14P例L9ki7Qo4Gl6:c88290qrRf在day-of-week字段用"6#3" or "FRI#3"指这个月第3个周五(6指周五N344Mw3Qm0AWFE,8CYsr3指第3个)9fZa5P1O3FA。Q0Se9如果指定的日期不存在7220rr3,88UD93触发器就不会触发1Nx0n6lJgM3。Jj5OS43L 表达式例子ENdg1KpV1qdDq8:p3L9771 0 * * * * ? 每1分钟触发一次 0 0 * * * ? 每天每1小时触发一次 0 0 10 * * ? 每天10点触发一次 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发 0 30 9 1 * ? 每月1号上午9点半 0 15 10 15 * ? 每月15日上午10:15触发 */5 * * * * ? 每隔5秒执行一次 0 */1 * * * ? 每隔1分钟执行一次 0 0 5-15 * * ? 每天5-15点整点触发 0 0/3 * * * ? 每三分钟触发一次 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发 0 0/5 141GwmyS8Dze,is17V7tz18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 0 0 10I4O75xskK,0n8oZ5jkSw0y145y94HXF,4C6No48jD2WlI916 * * ? 每天上午10点W0V1H52,7o0pq4gnoq847下午2点mUFdU8Hyx6tTgm,JLm67IXfmV4点 0 0 12 ? * WED 表示每个星期三中午12点 0 0 17 ? * TUESH6b8K5GH6VgH8,opiO5HLBTHURby14EZ40,p2ve5SAT 每周二01bdoY8C8OR、uNL1tPL3S四7Tn61d47322Fvz、KRMC537uC4六下午五点 0 103xNRbniQ14PIy,Z01aE644 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发 0 0 23 L * ? 每月最后一天23点执行一次 0 15 10 L * ? 每月最后一日的上午10:15触发 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 0 15 10 * * ? 2005 2005年的每天上午10:15触发 0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发