Quartz-Cron Expression 使用介紹

  • 介紹

    cron是Unix/Linux系統工具,有很強的任務調度能力,Quartz的CronTrigger觸發器就是創建在cron的基礎上. 工具

  • 格式說明

    一個cron Expression(克龍表達式)是由6或7個字段以空格分隔的字符串,每一個字段包含一些容許的值或容許的特殊字符(具體見下表),     spa


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

Day of week(星期) orm

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

    

  • 特殊字符說明

    *:全部值,用來選擇某個字段的全部的值,例如'*'用在分鐘字段上,意味着每一分鐘(包含0-59全部值) ci

    ?:沒有具體的值,舉例說明,在每個月的10號出發任務,在Day of month(日)字段上設置值爲10,可是我不關心那一天星期幾,那麼在Day of week(星期)字段上設置'?'. 文檔

    -:用來標識一個範圍,例如在Hours(時)字段上設置'10-12',意味着在10點,11點和12點. 字符串

    ,:用來標識附加的值,例如在Hours(時)字段上設置'10,12,14',意味着在10點,12點和14點. io

    /:用來標識值的遞增,例如在Seconds(秒)字段上設置'0/15',意味着在第0秒,第15秒,第30面,第45秒.'/'左邊爲初始值,右邊爲遞增值. table

    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',標識一個月中最後一個工做日. tab

    #:用在星期字段,標識一個月中第幾個星期幾,例如'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的官方文檔.

相關文章
相關標籤/搜索