Spring定时任务@Scheduled的cron表达式

时间:2022-10-09 17:50:58

基本语法

cron表达式由6-7个时间域组成,每个时间域之间用空格隔开。

格式:

<秒> <分> <时> <日期> <月> <星期> <年份>
  • 秒:取值范围0-59
  • 分:取值范围0-59
  • 时:取值范围0-23
  • 日期:每月的的几数,0-31
  • 月:取值范围1-12,或英文简写JAN-DEC
  • 星期:取值范围1~7(其中1从星期天开始) 或英文简写 SUN,MON,TUE,WED,THU,FRI,SAT
  • 年份:可选,取值范围1970-2099

通用特殊字符

有四个通用的特殊字符:逗号(“,”),中横线(“-”),星号(“*”)以及斜杠(“/”)。这四个通用特殊字符都可以在所有的时间域里使用。

逗号“,”

逗号用于表示一个时间点列表。

0 0 10,14,16 * * ?

在<时>域处由10,14和16构成的时间列表。表示每天的10点,14点以及16点

中横线“-”

中横线表示一个连续的时间区间。

0 0-5 14 * * ? 

在<分>域处,0-5表示0到5分钟。表达式意思是在每天14:00到14:05,每个一分钟触发一次

星号“*”

星号表示任意值,假如在<分>元素使用*, 即表示每分钟都会触发事件。

0 0 12 * * ?

表达式在<日期>和<月>处使用了星号,即每月的每天。这里表示每天中午12点触发。

斜杠“/”

斜杠表示触发的时间间隔,格式为 <起始时间>/<间隔时间>。如在<时>元素处"6-10/2"表示6点到10点,每个2小时触发一次。

"0 0/5 14 * * ?" 

在<分>域处使用了斜杠,起始时间为0,间隔时间为5分钟。即在每天下午2点到下午2:55期间的每5分钟触发

<日期>和<星期>特有字符

仅用于<日期>和<星期>的字符:问号(“?”)以及L。

问号“?”

“?”字符仅被用于<日期>和<星期>两个域里,表示不指定值。注意:当这两个域其中一个被指定了值,为了避免冲突,需要将另一个域的值设为“?”

0 15 10 ? * *

在示例里<星期>被指定为任何值,为了避免冲突,在<日期>域需要设置为“?”.

字符L

字符L为last的简写,它表示最后一天。它只能用在<日期>和<星期>两个域里。

0 15 10 L * ?

在<日期>域使用L,<月>域使用了星号,即每月的最后一天。这里表示每月最后一天10:15触发

<日期>特有字符

W为<日期>域特有的字符,表示有效工作日(周一到周五)。系统将在离指定日期的最近的有效工作日触发事件。

W和L结合使用表示某个月最后一个工作日,即最后一个星期五