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/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息