Cron表達式(七子表達式)
一、七子含義
| 秒 | 分 | 時 | 日 | 月 | 周 | 年 | |
|---|---|---|---|---|---|---|---|
| 可用的值 | 0~59 | 0~59 | 0~23 | 1~31 | 1~12(JAN-DEC) | 1~7(SUN-SAT) | 1970~2099 |
| 可用的通配符 | , - * / | , - * / | , - * / | , - * / ? L W | , - * / | , - * / ? L # | , - * / |
| 是否必填 | 是 | 是 | 是 | 是 | 是 | 是 | 否 |
二、可用值說明
秒(Seconds):可用數字"0~59"表示。
分(Minutes):可用數字"0~59"表示。
時(Hours):可用數字"0~23"表示。
日(Day-of-Month):可用數字"1~31"表示,但要注意具體月份的天數。
月(Month):可用數字"1~12"或單詞縮寫"JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC"表示。
周(Day-of-Week):可用數字"1~7"或單詞縮寫"SUN,MON,TUE,WED,THU,FRI,SAT"表示(用數字表示時注意"1"表示周日)。
年(Year):可用數字"1970~2099"表示,此項非必填。
三、可用通配符說明
| 通配符 | 適用域 | 含義 | 實例 |
|---|---|---|---|
| * | 所有 | 表示所有值 | 在分的位置上設置"*",表示每分鐘都會觸發。 |
| ? | 日和周 (日和周不能同時為"?") |
不需要關心當前位置的值,表示每月的某一天,或每周的某一天 | "0 0 0 1 * ?"表示每月1號觸發,但不關心是周幾,所以周的位置設置為"?"; "0 0 0 ? * 2"表示每周一觸發,但不關心是多少號,所以日的位置設置為"?"。 |
| - | 所有 | 表示區間 | 在時的位置上設置"10-12",表示"10點、11點、12點"觸發。 |
| , | 所有 | 表示指定多個值 | 在周的位置上設置"MON,WED,FRI",表示"周一、周三、周五"觸發。 |
| / | 所有 | 用於遞增觸發 | 在秒的位置上設置"5/15",表示從5秒開始,每隔15秒觸發一次(5,20,35,50)。 在月的位置上設置"1/7",表示每月1號開始,每隔7天觸發一次。 |
| L(Last) | 日和周 | 表示每月或每周的最後一天; XL表示每月的最後一個周X |
"0 0 0 L * ?"表示每月的最後一天觸發; "0 0 0 ? * L"表示每月的最後一個周六觸發; "0 0 0 ? * 2L"表示每月的最後一個周一觸發。 |
| W(Work) | 日 | 表示離指定日期最近的工作日(周一至周五,忽略節假日)("W"前的數字表示多少號) | 在日的位置上設置"15W",表示離15號的最近的工作日觸發(若15號為周六,則14號觸發;若15號為周日,則16號觸發;若15號為工作日,則當天觸發); 在日的位置上設置"1W",表示當月1號往後最近的工作日觸發。(若1號為周六,則3號觸發); "L"和"W"可組合使用。如果在日欄位上設置"LW",則表示在本月的最後一個工作日觸發。 |
| # | 周 | N#M表示每月的第M個周N | "0 0 0 ? 5 1#2"表示母親節(每年5月的第二個周日); "0 0 0 ? 6 1#3"表示父親節(每年6月的第三個周日)。 |
