一個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天觸發一次