Cron表達式是一個由 7個子表達式組成的字元串。每個子表達式都描述了一個單獨的日程細節。這些子表達式用空格分隔。
Cron表達式說明:
秒
分
時
日
月
周
年
Seconds
Minutes
Hours
Day-of-Month
Month
Day-of-Week
Year
分鐘
小時
月中的天
周中的天
子表達式說明:
是否必須
取值範圍
特殊字元
是
0-59
, - * /
0-23
1-31(需要考慮實際月份)
, - * / ? L W C
1-12 或 JAN-DEC
1-7 或 SUN-SAT
, - * / ? L C #
否
空或 1970-2099
彙總:
1
2
3
4
5
6
7
字 段
是否必 須
取值範 圍
1-31
特殊字 符
,-*/
注意:Cron表達式對特殊字元的大小寫不敏感,對代表星期的縮寫英文大小寫也不敏感。
*
星号
通配字元,表示該字段可以接受任何可能的值。比對該域的任意值。
?
問号
隻能用在日和周域上,但是不能在這兩個域上同時使用。表示不指定值,未說明的值,即不關心它為何值。
#
井号
隻能用于周域中。它用于指定月份中的第幾周的哪一天。
/
斜杠
用來指定數值的增量。例如a/b表示從a開始每次增加b。
-
中劃線
用于指定一個範圍。
,
逗号
用于指定一個清單值。
L
字母
隻能用在日和周域上。某域上允許的最後一個值。
W
隻能用于日域中,代表着工作日。
C
隻在日期和星期字段中使用,代表“Calendar”的意思。它的意思是計劃所關聯的日期,如果日期沒有被關聯,則相當于月曆中所有日期。
代表所有可能的值,比對該域合法的任意值。是以,“ * ”在子表達式【月】裡表示每個月的含義,“ * ”在子表達式【周】表示星期的每一天。
隻能用在日和周域上,但是不能在這兩個域上同時使用。表示不指定值。你可以認為 ? 字元是 "我并不關心在該域上是什麼值。"
這不同于星号,星号是訓示着該域上的每一個值。? 是說不為該域指定值。
例如想在每月的20日觸發排程,不管20日到底是星期幾,則隻能使用如下寫法: 13 13 15 20 * ?,
其中最後一位隻能用?,而不能使用*,如果使用*表示不管星期幾都會觸發,實際上并不是這樣。
該字元隻能在星期字段中使用,表示當月某個工作日。如6#3表示當月的第三個星期五(6表示星期五,#3表示目前的第三個),而4#5表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發;
x/y表達一個等步長序列,x為起始值,y為增量步長值。如在分鐘字段中使用0/15,則表示為0,15,30和45秒,而5/15在分鐘字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y;
表達一個範圍,如在小時字段中使用“10-12”,則表示從10到12點,即10,11,12;
表達一個指定的清單值,如在星期字段中使用“MON,WED,FRI”,則表示星期一,星期三和星期五;
該字元隻在日期和星期字段中使用,代表“Last”的意思,但它在兩個字段中意思不同。L在日期字段中,表示這個月份的最後一天,如一月的31号,非閏年二月的28号;如果L用在星期中,則表示星期六,等同于7。但是,如果L出現在星期字段裡,而且在前面有一個數值X,則表示“這個月的最後X天”,例如,6L表示該月的最後星期五;
該字元隻能出現在日期字段裡,是對前導日期的修飾,表示離該日期最近的工作日。例如15W表示離該月15号最近的工作日,如果該月15号是星期六,則比對14号星期五;如果15日是星期日,則比對16号星期一;如果15号是星期二,那結果就是15号星期二。但必須注意關聯的比對日期不能夠跨月,如你指定1W,如果1号是星期六,結果比對的是3号星期一,而非上個月最後的那天。W字元串隻能指定單一日期,而不能指定日期範圍。
LW組合:在日期字段可以組合使用LW,它的意思是當月的最後一個工作日;
該字元隻在日期和星期字段中使用,代表“Calendar”的意思。它的意思是計劃所關聯的日期,如果日期沒有被關聯,則相當于月曆中所有日期。例如5C在日期字段中就相當于月曆5日以後的第一天。1C在星期字段中相當于星期日後的第一天。
30 * * * * ?
每半分鐘觸發任務
30 10 * * * ?
每小時的10分30秒觸發任務
30 10 1 * * ?
每天1點10分30秒觸發任務
30 10 1 20 * ?
每月20号1點10分30秒觸發任務
30 10 1 20 10 ? *
每年10月20号1點10分30秒觸發任務
30 10 1 20 10 ? 2011
2011年10月20号1點10分30秒觸發任務
30 10 1 ? 10 * 2011
2011年10月每天1點10分30秒觸發任務
30 10 1 ? 10 SUN 2011
2011年10月每周日1點10分30秒觸發任務
15,30,45 * * * * ?
每15秒,30秒,45秒時觸發任務
15-45 * * * * ?
15到45秒内,每秒都觸發任務
15/5 * * * * ?
每分鐘的每15秒開始觸發,每隔5秒觸發一次
15-30/5 * * * * ?
每分鐘的15秒到30秒之間開始觸發,每隔5秒觸發一次
0 0/3 * * * ?
每小時的第0分0秒開始,每三分鐘觸發一次
0 15 10 ? * MON-FRI
星期一到星期五的10點15分0秒觸發任務
0 15 10 L * ?
每個月最後一天的10點15分0秒觸發任務
0 15 10 LW * ?
每個月最後一個工作日的10點15分0秒觸發任務
0 15 10 ? * 5L
每個月最後一個星期四的10點15分0秒觸發任務
0 15 10 ? * 5#3
每個月第三周的星期四的10點15分0秒觸發任務