The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks
          字段 允許值 允許的特殊字符
            0-59   , - * /
            0-59   , - * /
          小時   0-23   , - * /
          日期   1-31   , - * ? / L W C
          月份   1-12 或者 JAN-DEC   , - * /
          星期   1-7 或者 SUN-SAT   , - * ? / L C #
          年(可選)   留空, 1970-2099   , - * /


          The '*' character is used to specify all values. For example, "*" in the minute field means "every minute". 
          “*”字符被用來指定所有的值。如:”*“在分鐘的字段域里表示“每分鐘”。 
          The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification. 
          “?”字符只在日期域和星期域中使用。它被用來指定“非明確的值”。當你需要通過在這兩個域中的一個來指定一些東西的時候,它是有用的。看下面的例子你就會明白。 
          月份中的日期和星期中的日期這兩個元素時互斥的一起應該通過設置一個問號(?)來表明不想設置那個字段

          The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12". 
          “-”字符被用來指定一個范圍。如:“10-12”在小時域意味著“10點、11點、12點”。 

          The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday". 
          “,”字符被用來指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”. 

          The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". Specifying '*' before the '/' is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The "/" character simply helps you turn on every "nth" value in the given set. Thus "7/6" in the month field only turns on month "7", it does NOT mean every 6th month, please note that subtlety. 

          The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results. 

          L是‘last’的省略寫法可以表示day-of-month和day-of-week域,但在兩個字段中的意思不同,例如day-of-month域中表示一個月的最后一天,
          如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上數字,它表示一個月的最后幾天,例如‘6L’就表示一個月的最后一個
          星期五,

          The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days

          The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month". 

          The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month. 

          The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday". 
          關于cronExpression的介紹:
           
          字段 允許值 允許的特殊字符 
          秒 0-59 , - * / 
          分 0-59 , - * / 
          小時 0-23 , - * / 
          日期 1-31 , - * ? / L W C 
          月份 1-12 或者 JAN-DEC , - * / 
          星期 1-7 或者 SUN-SAT , - * ? / L C # 
          年(可選) 留空, 1970-2099 , - * / 
          表達式意義 
          "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觸發 
          每天早上6點 
          0 6 * * * 
          每兩個小時 
          0 */2 * * * 
          晚上11點到早上8點之間每兩個小時,早上八點 
          0 23-7/2,8 * * * 
          每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 
          0 11 4 * 1-3 
          1月1日早上4點 
          0 4 1 1 *

          quartz的高級特性不僅如此 
          1 數據庫存儲 
          2 集群支持 
          3 數據庫持久化任務,trigger 
          4 trigger 的停止,運行 
          5 任務的任意添加 
          6 比corntrigger 更詳盡的任務安排 
          7 線程的內部數據交換



          一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素。
          按順序依次為
          1.秒(0~59)
          2.分鐘(0~59)
          3.小時(0~23)
           
          4.天(月)(0~31,但是你需要考慮你月的天數)
          5.月(0~11)
          6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
          7.年份(1970-2099)

          其中每個元素可以是一個值(如6),一個連續區間(9-12),一個間隔時間(8-18/4)(/表示每隔4小時),一個列表(1,3,5),通配符。
          由于"月份中的日期"和"星期中的日期"這兩個元素互斥的,必須要對其中一個設置?.

          0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
          0 0/30 9-17 * * ??? 朝九晚五工作時間內每半小時
          0 0 12 ? * WED 表示每個星期三中午12點

          有些子表達式能包含一些范圍或列表
          例如:子表達式(天(星期))可以為 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

          “*”字符代表所有可能的值
          因此,“*”在子表達式(月)里表示每個月的含義,“*”在子表達式(天(星期))表示星期的每一天

          “/”字符用來指定數值的增量
          例如:在子表達式(分鐘)里的“0/15”表示從第0分鐘開始,每15分鐘 ;
          在子表達式(分鐘)里的“3/20”表示從第3分鐘開始,每20分鐘(它和“3,23,43”)的含義一樣

          “?”字符僅被用于天(月)和天(星期)兩個子表達式,表示不指定值
          當2個子表達式其中之一被指定了值以后,為了避免沖突,需要將另一個子表達式的值設為“?”

           

          “L” 字符僅被用于天(月)和天(星期)兩個子表達式,它是單詞“last”的縮寫

          但是它在兩個子表達式里的含義是不同的。

          在天(月)子表達式中,“L”表示一個月的最后一天 ,
          在天(星期)自表達式中,“L”表示一個星期的最后一天,也就是SAT

          如果在“L”前有具體的內容,它就具有其他的含義了

          例如:“6L”表示這個月的倒數第6天,“FRIL”表示這個月的最后一個星期五

          注意:在使用“L”參數時,不要指定列表或范圍,因為這會導致問題

          ============================================

          CronTrigger配置完整格式為: [秒] [分] [小時] [日] [月] [周] [年]

           

           序號說明 是否必填 允許填寫的值允許的通配符
           1 秒 是 0-59   , - * /
           2 分 是 0-59   , - * /
           3小時 是 0-23  , - * /
           4 日 是 1-31  , - * ? / L W
           5 月 是 1-12 or JAN-DEC  , - * /
           6 周 是 1-7 or SUN-SAT  , - * ? / L #
           7 年 否 empty 或 1970-2099  , - * /

          通配符說明:
          * 表示所有值. 例如:在分的字段上設置 "*",表示每一分鐘都會觸發。
          ? 表示不指定值。使用的場景為不需要關心當前設置這個字段的值。例如:要在每月的10號觸發一個操作,但不關心是周幾,所以需要周位置的那個字段設置為"?" 具體設置為 0 0 0 10 * ?
          - 表示區間。例如 在小時上設置 "10-12",表示 10,11,12點都會觸發。
          , 表示指定多個值,例如在周字段上設置 "MON,WED,FRI" 表示周一,周三和周五觸發
          / 用于遞增觸發。如在秒上面設置"5/15" 表示從5秒開始,每增15秒觸發(5,20,35,50)。 在月字段上設置'1/3'所示每月1號開始,每隔三天觸發一次。
          L 表示最后的意思。在日字段設置上,表示當月的最后一天(依據當前月份,如果是二月還會依據是否是潤年[leap]), 在周字段上表示星期六,相當于"7"或"SAT"。如果在"L"前加上數字,則表示該數據的最后一個。例如在周字段上設置"6L"這樣的格式,則表示“本月最后一個星期五" 
          W 表示離指定日期的最近那個工作日(周一至周五). 例如在日字段上設置"15W",表示離每月15號最近的那個工作日觸發。如果15號正好是周六,則找最近的周五(14號)觸發, 如果15號是周未,則找最近的下周一(16號)觸發.如果15號正好在工作日(周一至周五),則就在該天觸發。如果指定格式為 "1W",它則表示每月1號往后最近的工作日觸發。如果1號正是周六,則將在3號下周一觸發。(注,"W"前只能設置具體的數字,不允許區間"-").
          # 序號(表示每月的第幾個周幾),例如在周字段上設置"6#3"表示在每月的第三個周六.注意如果指定"#5",正好第五周沒有周六,則不會觸發該配置(用在母親節和父親節再合適不過了) ;

          小提示:
          'L'和 'W'可以一組合使用。如果在日字段上設置"LW",則表示在本月的最后一個工作日觸發;
          周字段的設置,若使用英文字母是不區分大小寫的,即MON 與mon相同;
                  
          常用示例:

           

          0 0 12 * * ?每天12點觸發
          0 15 10 ? * *每天10點15分觸發
          0 15 10 * * ?每天10點15分觸發
          0 15 10 * * ? *每天10點15分觸發
          0 15 10 * * ? 20052005年每天10點15分觸發
          0 * 14 * * ?每天下午的 2點到2點59分每分觸發
          0 0/5 14 * * ?每天下午的 2點到2點59分(整點開始,每隔5分觸發)
          0 0/5 14,18 * * ?每天下午的 2點到2點59分、18點到18點59分(整點開始,每隔5分觸發)
          0 0-5 14 * * ?每天下午的 2點到2點05分每分觸發
          0 10,44 14 ? 3 WED3月分每周三下午的 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每月的第三周的星期五開始觸發
          0 0 12 1/5 * ?每月的第一個中午開始每隔5天觸發一次
          0 11 11 11 11 ?每年的11月11號 11點11分觸發(光棍節)

          posted on 2014-07-31 15:32 Eric_jiang 閱讀(410) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 靖西县| 鄄城县| 廊坊市| 凌海市| 阳城县| 盐池县| 东莞市| 兰西县| 宁海县| 兴文县| 天长市| 庄浪县| 平定县| 德州市| 永德县| 区。| 霍林郭勒市| 靖州| 石台县| 桓台县| 桦南县| 武隆县| 辰溪县| 林口县| 抚顺县| 收藏| 治多县| 甘肃省| 曲靖市| 奉新县| 克东县| 东丰县| 财经| 洛浦县| 镇坪县| 桂阳县| 富平县| 大埔县| 惠来县| 肃南| 常熟市|