Cron 表達(dá)式包括以下 7 個(gè)字段:
- 秒
- 分
- 小時(shí)
- 月內(nèi)日期
- 月
- 周內(nèi)日期
- 年(可選字段)
Field Name | Mandatory? | Allowed Values | Allowed Special Characters |
---|---|---|---|
Seconds | YES | 0-59 | , - * / |
Minutes | YES | 0-59 | , - * / |
Hours | YES | 0-23 | , - * / |
Day of month | YES | 1-31 | , - * ? / L W C |
Month | YES | 1-12 or JAN-DEC | , - * / |
Day of week | YES | 1-7 or SUN-SAT | , - * ? / L C # |
Year | NO | empty, 1970-2099 | , - * / |
一個(gè)cronString是一個(gè)字符串,包含6 或 7 個(gè)用空格分隔的域。6 個(gè)強(qiáng)制的和1 個(gè)可選的域如下:
* 字符用于指定所有的值。例如,minute 域中的* 意為每分鐘。
? 字符用于day-of-month 和 day-of-week 域。它被用于指定非特定值。這是有用的,當(dāng)你需要在2個(gè)域中的一個(gè),而不是另一個(gè)指定什么時(shí)。請(qǐng)參考以下的實(shí)例。
- 字符用于指定范圍。例如hour 域中的10-12 意為10,11 和 12 點(diǎn)。
, 字符用于指定增值。例如day-of-week 域中的MON,WED,FRI 意為星期一,星期三和”星期五。
/ 字符用于指定增量。例如,seconds 域中的0/15 意為0,15,30 和45 秒。seconds域中的5/15 意為5,20,35 和50 秒。你也可在* 字符后指定/ – 在這個(gè)實(shí)例中,* 等價(jià)于在/ 前有0。
L 字符用于day-of-month 和 day-of-week 域。這個(gè)字符是last 的簡(jiǎn)寫,但它在2 個(gè)域中有不同意思。例如,day-of-month field 中的值L 意為一個(gè)月中的最后一天-一月31,非閏年的二月28。如果單獨(dú)在day-of-week field 使用,它僅僅意為7 或SAT。但是如果在 day-of-week域中另一個(gè)值后使用,它意為這個(gè)月的倒數(shù)xxx 天– 例如6L 意為此月的最后一個(gè)星期五。當(dāng)使用L 選項(xiàng)時(shí),指定列表或值的范圍很重要,因?yàn)槠渚哂卸x性。
W 字符用于day-of-month 域。這個(gè)字符用于指定臨近給定某天最近的工作日(Monday-Friday)。作為一個(gè)實(shí)例,如果你指定15W 作為day-of-month 域的值,意為:距離此月15日最近的工作日。因?yàn)槿绻?/span>15日是星期六,觸發(fā)器將在星期五,也就是14日fire。如果15日是星期天,觸發(fā)器將在星期一,也就是16日fire。如果15 日是星期二,那么它將在星期二,15日(也就是當(dāng)天)fire。然而,如果你指定1W 作為day-of-month 的值,如果1號(hào)是星期六,觸發(fā)器將在星期一,也就是3號(hào)fire,因?yàn)樗谝粋€(gè)月的邊界上不跳轉(zhuǎn)。當(dāng)day-of-month 是一個(gè)single day,而不是一個(gè)范圍或是days 的列表時(shí),才指定W 字符。
L 和W 字符也可在day-of-month 表達(dá)式上組合,產(chǎn)生LW,它翻譯成此月的最后一個(gè)工作日。
# 字符用于day-of-week 域。這個(gè)字符用于指定此月的第n 天。例如,day-of-week 域中的6#3 值意為此月中的第三個(gè)星期五( 6號(hào) = 星期五且"#3" = 此月的3號(hào))。其它實(shí)例:"2#1" = month 中的首個(gè)Monday,"4#5" = month 中的第五個(gè)Wednesday。注意如果你指定#5,在此月中給定的day-of-week 沒有5 個(gè),那么那個(gè)月不會(huì)發(fā)生firing。
C 字符用于day-of-month 和 day-of-week 域。這個(gè)字符是calendar 的簡(jiǎn)寫。這意味著如果有任何關(guān)聯(lián)的calendar,根據(jù)它計(jì)算值。如果沒有關(guān)聯(lián)的calendar,那么它等價(jià)于有一個(gè)all-inclusive calendar。day-of-month 域中的5C 的值意為first day included by calendar on or after 5th。day-of-week 域中的1C 的值意為first day included by calendar on or after sunday。
合法字符和months 和days of week 的名字不是大小寫敏感的。
這里是一些完整實(shí)例: