CronExpression表達式語法總結

一個cron表達式由6或7個時間元素組成。它們之間用空格分隔,依次爲:[秒] [分] [小時] [日] [月] [星期] [年]

序號 說明 是否必填 允許填寫的值 允許的符號
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 1970-2099 , - * /

其中每個元素值可以是一個確定值(6),一個連續區間(9-12),一個間隔時間(0/5),一個列表(1,3,5)或通配符。

“-”表示可選值範圍,如在“小時”上設置“10-12”,表示10點、11點和12點觸發。
“,”表示可選的多個值,例如在“星期”上設置“MON,WED,FRI”,表示週一,週三和週五觸發。
“/”用於遞增觸發,如在“秒”上面設置“5/15”表示從第5秒開始,每15秒觸發一次(5,20,35,50);在“日”上設置“1/3”表示每月1號開始,每三天觸發一次。

*表示所有值. 如在“分”上設置“*”,表示每分鐘觸發。
“?”字符僅出現在“日”和“星期”兩個元素上,表示不指定值。當這兩個元素之一被指定了值以後,爲了避免衝突,需要將另一個元素的值設爲“?”

“月”和“星期”元素上若使用英文字母是不區分大小寫的,即MON與mon相同

“L” 字符僅出現在“日”和“星期”兩個元素上,它是單詞“last”的縮寫。
“L”在“日”元素上出現,表示每個月的最後一天;在“星期”元素上出現,表示每個月最後一個星期六。
如果在“L”前有具體的內容,它就具有其他的含義了。例如:“6L”在“日”上出現,表示每月的倒數第6天;“5L”在“星期”上出現,表示每月的最後一個星期四

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

W表示離指定日期的最近那個工作日(週一至週五).
例如在日字段上設置“15W”,表示離每月15號最近的那個工作日觸發。
如果15號正好是週六,則找最近的週五(14號)觸發;如果15號是周未,則找最近的下週一(16號)觸發;如果15號正好在工作日(週一至週五),則就在該天觸發。
如果指定格式爲“1W”,它則表示每月1號往後最近的工作日觸發。
如果1號正是週六,則將在3號下週一觸發。(注,“W”前只能設置具體的數字,不允許區間“-”).

小提示:“L”和 “W”可以一組合使用。如果在“日”上設置“LW”,則表示在本月的最後一個工作日觸發;

常用示例:
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 * * ? 每天14點到14點59分之間,每分鐘觸發一次

0 0/5 14 * * ? 每天14點到14點59分之間,每5分鐘觸發一次(從14點開始觸發)

0 0/5 14,18 * * ? 每天14點到14點59分及18點到18點59分,每5分鐘觸發一次(分別從14點、18點開始觸發)

0 0-5 14 * * ? 每天14點到14點05分之間,每分鐘觸發

0 10,44 14 ? 3 WED 3月份每週三14點10分和14點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 0 12 1/5 * ? 每月1號的12點開始觸發,每隔5天觸發一次

發佈了59 篇原創文章 · 獲贊 62 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章