{秒} {分} {时} {日} {月} {周} {年}(可选,留空)
表1-1 cron表达式中域的范围和可能出现的特殊符号
域 |
范围 |
特殊字符 |
是否必须 |
含义 |
例子 |
秒 |
0-59 |
, - * / |
Y |
seconds表示指定的秒数触发定时任务 |
"0,3"表示0秒和3秒触发 |
分 |
0-59 |
, - * / |
Y |
minutes表示指定的分钟触发定时任务 |
"0-3"表示0分钟到3分钟每分钟都触发 |
时 |
0-23 |
, - * / |
Y |
hours表示指定的小时触发定时任务 |
"3-15/2"表示上午3点到下午3点每隔2个小时触发 |
日 |
1-31(可以写0,但不会生效) |
, - * / ? |
Y |
daysOfMonth表示指定的日期触发定时任务 |
"1"表示1号触发 |
月 |
1-12或JAN-DEC |
, - * / |
Y |
months表示指定的月份触发定时任务 |
"1-4,12"表示1月到4月以及12月触发 |
周 |
0-7(0和7都表示周日)或SUN-SAT |
, - * / ? |
Y |
daysOfWeek表示指定的星期触发定时任务 |
"6,7"表示周六日触发 |
年 |
1970-2099 |
, - * / |
N |
years表示指定的年份触发定时任务 |
"2017"表示年份为2017触发 |
表1-2 cron表达式中可能出现的特殊符号含义
特殊字符 |
含义 |
例子 |
, |
表示枚举多个值,这些值之间是"或"的关系 |
例如在月份上使用"1-3,10,12"表示1月到3月,10月,12月都触发 |
- |
表示范围 |
例如在分域上使用5-10表示从5分钟到10分钟每分钟触发一次 |
* |
匹配该域的任意值 |
例如在日域上使用"*",则表示每天都触发该定时任务 |
/ |
表示起始时间触发一次,然后每隔固定时间触发一次 |
例如在分钟域使用"10/2"表示从10分钟开始每隔2分钟触发一次,直到58分钟;也可以和字符"-"连用,例如在分钟域使用"10-30/2"表示从10分钟开始每隔2分钟触发一次,直到30分钟 |
? |
只能在日和周域使用,表示非明确的值,实际作用等同"*",即匹配任意值 |
一般在日和周上会出现一次,当然,如果你对日和周两个域都使用"?"或者都使用其他值也没什么问题 |
注意,1月到12月可以用对应的英文缩写JAN-DEC代替,周日到周六可以用对应的英文缩写SUN-SAT代替。但是,周日的缩写SUN只会被替换为0,因此在cron表达式的周域,我们可以写6-7,却不能写SAT-SUN。