星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
一个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 的名字不是大小写敏感的。
这里是一些完整实例: