星號(*)字符是通配字符,表示該字段可以接受任何可能的值。
一個cronString是一個字符串,包含6 或 7 個用空格分隔的域。6 個強制的和1 個可選的域如下:
* 字符用于指定所有的值。例如,minute 域中的* 意為每分鐘。
? 字符用于day-of-month 和 day-of-week 域。它被用于指定非特定值。這是有用的,當你需要在2個域中的一個,而不是另一個指定什么時。請參考以下的實例。
- 字符用于指定范圍。例如hour 域中的10-12 意為10,11 和 12 點。
, 字符用于指定增值。例如day-of-week 域中的MON,WED,FRI 意為星期一,星期三和”星期五。
/ 字符用于指定增量。例如,seconds 域中的0/15 意為0,15,30 和45 秒。seconds域中的5/15 意為5,20,35 和50 秒。你也可在* 字符后指定/ – 在這個實例中,* 等價于在/ 前有0。
L 字符用于day-of-month 和 day-of-week 域。這個字符是last 的簡寫,但它在2 個域中有不同意思。例如,day-of-month field 中的值L 意為一個月中的最后一天-一月31,非閏年的二月28。如果單獨在day-of-week field 使用,它僅僅意為7 或SAT。但是如果在 day-of-week域中另一個值后使用,它意為這個月的倒數xxx 天– 例如6L 意為此月的最后一個星期五。當使用L 選項時,指定列表或值的范圍很重要,因為其具有二義性。
W 字符用于day-of-month 域。這個字符用于指定臨近給定某天最近的工作日(Monday-Friday)。作為一個實例,如果你指定15W 作為day-of-month 域的值,意為:距離此月15日最近的工作日。因為如果15日是星期六,觸發器將在星期五,也就是14日fire。如果15日是星期天,觸發器將在星期一,也就是16日fire。如果15 日是星期二,那么它將在星期二,15日(也就是當天)fire。然而,如果你指定1W 作為day-of-month 的值,如果1號是星期六,觸發器將在星期一,也就是3號fire,因為它在一個月的邊界上不跳轉。當day-of-month 是一個single day,而不是一個范圍或是days 的列表時,才指定W 字符。
L 和W 字符也可在day-of-month 表達式上組合,產生LW,它翻譯成此月的最后一個工作日。
# 字符用于day-of-week 域。這個字符用于指定此月的第n 天。例如,day-of-week 域中的6#3 值意為此月中的第三個星期五( 6號 = 星期五且"#3" = 此月的3號)。其它實例:"2#1" = month 中的首個Monday,"4#5" = month 中的第五個Wednesday。注意如果你指定#5,在此月中給定的day-of-week 沒有5 個,那么那個月不會發生firing。
C 字符用于day-of-month 和 day-of-week 域。這個字符是calendar 的簡寫。這意味著如果有任何關聯的calendar,根據它計算值。如果沒有關聯的calendar,那么它等價于有一個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 的名字不是大小寫敏感的。
這里是一些完整實例: