quartz cron表達式詳解

1.一個quartz表達式至少有6個(或是7個),有空格分隔的時間元素spa

2.表達式從左到右順序依次表示:秒  分鐘  小時  日  月  星期  年ast

3.表達式的值:集合

字段         容許值               容許的特殊字符  
秒           0-59                 , - * /  
分           0-59                 , - * /  
小時         0-23                 , - * /  
日期         1-31                 , - * ? / L W C  
月份         1-12 或者 JAN-DEC    , - * /  
星期         1-7 或者 SUN-SAT     , - * ? / L C #  
年(可選)   留空, 1970-2099      , - * /  時間

4.特殊字符意思co

「*」字符被用來指定全部的值。如:」*「在分鐘的字段域裏表示「每分鐘」。 quartz

「?」字符只在日期域和星期域中使用。它被用來指定「非明確的值」。月份中的日期和星期中的日期這兩個元素時互斥的一塊兒應該經過設置一個問號(?)來代表不想設置那個字段。字符

「-」字符被用來指定一個範圍。如:「10-12」在小時域意味着「10點、11點、12點」。工作

「,」字符被用來指定另外的值。如:「MON,WED,FRI」在星期域裏表示」星期1、星期3、星期五」。數字

「/」字符用於指定增量。如:「0/15」在秒域意思是沒分鐘的0,15,30和45秒。「5/15」在分鐘域表示沒小時的5,20,35 和50。符號「*」在「/」前面(如:*/10)等價於0在「/」前面(如:0/10)。記住一條本質:表達式的每一個數值域都是一個有最大值和最小值的集 合,如:秒域和分鐘域的集合是0-59,日期域是1-31,月份域是1-12。字符「/」能夠幫助你在每一個字符域中取相應的數值。如:「7/6」在月份域 的時候只有當7月的時候纔會觸發,並非表示每一個6月。錯誤

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

字符「W」只容許日期域出現。這個字符用於指定日期的最近工做日。例如:若是你在日期域中寫 「15W」,表示:這個月15號最近的工做日。因此,若是15號是週六,則任務會在14號觸發。若是15好是週日,則任務會在週一也就是16號觸發。若是 是在日期域填寫「1W」即便1號是週六,那麼任務也只會在下週一,也就是3號觸發,「W」字符指定的最近工做日是不可以跨月份的。字符「W」只能配合一個 單獨的數值使用,不可以是一個數字段,如:1-15W是錯誤的。

「L」和「W」能夠在日期域中聯合使用,LW表示這個月最後一週的工做日。

字符「#」只容許在星期域中出現。這個字符用於指定本月的某某天。例如:「6#3」表示本月第三週的星期五(6表示星期五,3表示第三週)。「2#1」表示本月第一週的星期一。「4#5」表示第五週的星期三。

字符「C」容許在日期域和星期域出現。這個字符依靠一個指定的「日曆」。也就是說這個表達式的值依賴於相關的「日曆」的計算結果,若是沒有 「日曆」關聯,則等價於全部包含的「日曆」。如:日期域是「5C」表示關聯「日曆」中第一天,或者這個月開始的第一天的後5天。星期域是「1C」表示關聯 「日曆」中第一天,或者星期的第一天的後1天,也就是週日的後一天(週一)。

5.表達式舉例

"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觸發 0 6 * * *              天天早上6點 0 */2 * * *            每兩個小時 0 23-7/2,8 * * *      晚上11點到早上8點之間每兩個小時,早上八點 0 11 4 * 1-3           每月的4號和每一個禮拜的禮拜一到禮拜三的早上11點 0 4 1 1 *              1月1日早上4點

相關文章
相關標籤/搜索