CRON表达式学习
CRON表达式
为程序中的定时任务做执行计划和执行编排的一种表达式
一、基本格式
{秒数}{分钟数}{小时数}{日期}{月份}{星期}{年份[可空]}
1. 详解
1.1 {秒数}
- 范围:0-59
- 限制:不许为空
- 注意:值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1秒钟触发定时任务
,
:表示在指定秒数触发定时任务
- 示例:
0,15,30,45
表示在0秒,15秒,30秒,45秒时触发定时任务
-
:表示在指定秒数范围内触发定时任务,每隔1秒钟触发一次定时任务
- 示例:
20-30
表示在20秒到30秒的范围内,每隔1秒钟触发定时任务
/
:表示每隔指定秒数步长就触发定时任务
- 示例:
0/20
表示从0秒钟开始,每隔20秒钟触发一次定时任务
1.2 {分钟数}
- 范围:0-59
- 限制:不许为空
- 注意:值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1分钟触发定时任务
,
:表示在指定分钟数触发定时任务
-
:表示在指定分钟数范围内触发定时任务,每隔1分钟触发一次定时任务
/
:表示每隔指定分钟数步长就触发定时任务
1.3 {小时数}
- 范围:0-23
- 限制:不许为空
- 注意:值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1小时触发定时任务
,
:表示在指定小时数触发定时任务
-
:表示在指定小时数范围内触发定时任务,每隔1小时触发一次定时任务
/
:表示每隔指定小时数步长就触发定时任务
1.4 {日期}
- 范围:1-31
- 限制:不许为空
- 注意:值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1天触发定时任务
?
:与{星期}
互斥,表示匹配该域任意值
,
:表示在指定日期触发定时任务
-
:表示在指定日期范围内触发定时任务,每隔1天触发一次定时任务
/
:表示每隔指定天数步长就触发定时任务
L
:表示当月的最后一天触发定时任务
W
:表示离当天最近的一个工作日触发定时任务
LW
:表示当月的最后一个工作日触发定时任务
C
:表示根据日历触发定时任务,不常用
1.5 {月份}
- 范围:1-12
- 限制:不许为空
- 注意:值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1个月触发定时任务
,
:表示在指定月份触发定时任务
-
:表示在指定月份范围内触发定时任务,每隔1个月触发一次定时任务
/
:表示每隔指定月份步长就触发定时任务
1.6 {星期}
- 范围:1-7
- 限制:不许为空
- 注意:
- 1为星期日,2为星期一,3为星期二,4为星期三,5为星期四,6为星期五
- 值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1个星期触发定时任务
?
:与{日期}
互斥,表示匹配该域任意值
,
:表示在指定星期触发定时任务
-
:表示在指定星期范围内触发定时任务,每隔1天触发一次定时任务
/
:表示每隔指定的天数步长就触发定时任务
L
:表示当前星期的最后一天触发定时任务,即星期六
#
:用来表示指定周数,#前面表示星期,#后面表示本月第几周
- 示例:
2#2
表示本月第二周的星期一
C
:根据日历触发,使用较少
1.7 {年份}
- 范围:1970-2099
- 限制:允许为空
- 注意:值不合法,调度器将会抛出
ScheduleException
异常
*
:表示每隔1年触发定时任务
,
:表示在指定年份触发定时任务
-
:表示在指定年份范围内触发定时任务,每隔1年触发一次定时任务
/
:表示每隔指定的年份步长就触发定时任务
2. 经典案例
30 * * * * ?
每半分钟触发任务
30 10 * * * ?
每小时的10分30秒触发任务
30 10 1 * * ?
每天1点10分30秒触发任务
30 10 1 20 * ?
每月20号1点10分30秒触发任务
30 10 1 20 10 ? *
每年10月20号1点10分30秒触发任务
30 10 1 20 10 ? 2011
2011年10月20号1点10分30秒触发任务
30 10 1 ? 10 * 2011
2011年10月每天1点10分30秒触发任务
30 10 1 ? 10 SUN 2011
2011年10月每周日1点10分30秒触发任务
15,30,45 * * * * ?
每15秒,30秒,45秒时触发任务
15-45 * * * * ?
15到45秒内,每秒都触发任务
15/5 * * * * ?
每分钟的每15秒开始触发,每隔5秒触发一次
15-30/5 * * * * ?
每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
0 0/3 * * * ?
每小时的第0分0秒开始,每三分钟触发一次
0 15 10 ? * MON-FRI
星期一到星期五的10点15分0秒触发任务
0 15 10 L * ?
每个月最后一天的10点15分0秒触发任务
0 15 10 LW * ?
每个月最后一个工作日的10点15分0秒触发任务
0 15 10 ? * 5L
每个月最后一个星期四的10点15分0秒触发任务
0 15 10 ? * 5#3
每个月第三周的星期四的10点15分0秒触发任务
原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://zhiyuandnc.github.io/RGEfzFph6/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息