欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cron Expression语法

程序员文章站 2022-06-14 08:46:10
...

前言

Cron表达式常被用于设置触发时间,比如Quartz中。写这篇的目的是配置Jenkins中Build periodically(定时构建)和Poll SCM(扫描SCM发生改变后构建),结果发现用的不是Cron后面有说明

 

Cron Expression配置说明

1.Cron Expression字符串格式

Cron Expression字符串的格式为“秒 分 小时 日 月 星期 年”,其中“年”是可选的,其余6个字段是必须的,每个字段间用空格隔开,可以用数字表示(数字表示精确匹配),也可以yongoing通配符表示(例如*表示任意数字,?表示由其它字段决定)

 

 

2.Cron Expression 取值范围

字段 取值范围  可接受通配符
0-59 , - * /
0-59 , - * /
小时 0-23 , - * /
1-31 , - * / ? L C W
1-12 或者JAN-DEC , - * /
星期 1-7 或者 SUN-SAT(1表示周日,7表示周六) , - * / ? L C #
年(可选) 1970-2099 , - * /

 

3.通配符说明

通配符 可用于字段 说明
? 日、星期 由其它字段确定,比如确定了年月日后星期是固定的,此时必须用?
* 所有字段 任意数字
- 所有字段 表示范围例如MON-FRI表示周一到周五的所有工作日
, 所有字段 表示多个值,比如MON,WED,表示周一或周三
/ 所有字段 表示数值的增度。例如 1/3表示从1开始,每次递增3,“1,4,7,10...”
L 日、星期 表示Last,最后一个的意思,代表月末或周六(根据放的位置)
C 日、星期 表示Calendar,由日历计算出来的日子,5C表示第一天或5号之后;星期中1C代表日历中第一天或周日以后(1表示周日)
W 表示Working Day,工作日;例如15W,表示本月内15日最近的工作日,返回的一定是本月内。
# 星期  表示第几个星期几,THU#3,表示第三个星期四,#前面是星期,后面是第几个

 

4.例子

59 59 12 01 01 ?    // 精确匹配,表示 1月1日12点59分59秒,星期?

0 0 12 * * ?    // 模糊匹配,表示 每天的12点,星期?

0 0 * 01 01 ?    // 模糊匹配,表示每年1月1日的每个整点

0 0 0 * * ? 2010 // 模糊匹配,表示2010年每天0时

0 0 * * * ?    // 每天每个小时

0 30 10 ? * MON    // 每周一上午10:30

0 0 12 ? * MON-FRI    // 每个工作日(周一到周五)的12:00

0 0 8 LW * ?    // 每月的最后一个工作日8:00

0 0 10 1/2 * ?    // 每月1号、3号、5号、7号... 的10:00

0 0 10 ? 11 THU#4    // 每年11月的第四个星期四(感恩节)上午10点

0 0 8,17 * * ? 2009-2015    //2009到2015年每天的8点和17点

0 0 8-17 * * ? 2009-2015    //2009到2015年每天的8点到17点

 

Jenkins中日期定义

1.字符串格式

Cron表达式字符串的格式为“分 小时 日 月 星期 年”,其中“年”是可选的,其余5个字段是必须的。

区别(1)没有秒 (2)星期的取值范围是0-6(SUN-SAT)

 

2.取值范围

字段 取值范围 通配符
0-59 * / , -
0-59 * / , -
1-31 * / , - ? L W
1-12 or JAN-DEC * / , -
星期 0-6 or SUN-SAT * / , - ? L #
1970–2099 * / , -

 

 

2.例子

*/5 * * * *   // 每5分钟

H/5 * * * *    // 每5分钟 推荐

5 * * * *    // 每小时的第5分钟 

0 8 * * *    // 每天8点

0 16,18,20,22 * * *    // 每天的16点、18点、20点、22点

0 1,18 * * *    // 每天的1点和18点

03 09 * * 1-5    // 工作日(周日到周五)的9点3分

59 23 * * 1-5 或者 @midnight     // 工作日(周日到周五)的9点3分