天天看點

Cron表達式Cron表達式特殊字元示例

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秒觸發任務

繼續閱讀