参数序号

参数名

是否可选

1

Seconds


2

Minutes


3

Hours


4

Day-of-Month


5

Month


6

Day-of-Week


7

Year


例如:"0 0 12 ? * WED" 在每星期三下午 12:00 执行

其中每个元素可以是一个值 (6),一个连续区间 (9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符,由于月份中的日期和星期中的日期这两个元素互斥的,必须要对其中一个设置 ?

0 0 10,14,16 * * ? 每天上午 10 点,下午 2 点,4 点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午 12 点

个别子表达式可以包含范围,例如在前面的例子里 WED 可以替换成 MON-FRIMON, WED, FRI 甚至是 MON-WED,SAT

每一个字段都有一套可以指定有效值,如下:

参数名

有效值

Seconds (秒)

可以用数字 0~59 表示

Minutes(分)

可以用数字 0~59 表示

Hours(时)

可以用数字 0~23 表示

Day-of-Month (日)

可以用数字 1~31 中的任一个值,但要注意一些特别的月份

Month (月)

可以用 0~11 或用字符串 JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC 表示

Day-of-Week (周)

可以用数字 1~7 表示(1=星期日)或用字符口串 SUN, MON, TUE, WED, THU, FRI, SAT 表示

*

代表整个时间段

/

为特别单位,表示为 如 0/15 表示每隔 15 分钟执行一次, 0 表示为从 0 分开始,3/20 表示表示每隔 20 分钟执行一次,3 表示从第 3 分钟开始执行

?

表示每月的某一天,或第周的某一天,由于月份中的日期和星期中的日期这两个元素互斥的,必须要对其中一个设置 ?

L

用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如 6L 表示每月的最后一个星期五

W

表示为最近工作日,如 15W 放在每月 (Day-of-Month) 字段上表示为到本月15日最近的工作日

#

是用来指定每月第 N 个工作日,在每周(Day-of-Week)这个字段中内容为 6#3 或者 FRI#3 则表示每月第三个星期五

Cron 表达式范例:

每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

作者 tojohnonly