在开发过程中经常需要使用定时任务在特定的时间执行一些特定程序。而 springboot Scheduled注解中可以方便的使用 cron 表达式来配置定时任务。在这SpringBoot 实现定时任务一篇文章中我们介绍了如何使用Scheduled实现定时任务,下面我们看下cron该如何编写。
cron表达式各占位符解释
字段 | 允许值 | 允许的特殊字符 | 是否允许为空 |
秒 | 0-59 | , – * / | 否 |
分 | 0-59 | , – * / | 否 |
小时 | 0-23 | , – * / | 否 |
日期 | 1-31 | , – * ? / L W C | 否 |
月份 | 1-12 或者 JAN-DEC | , – * / | 否 |
星期 | 1-7 或者 SUN-SAT | , – * ? / L C # | 否 |
年(可选) | 1970-2099 | , – * / | 是 |
-
“,” :在指定的秒数触发,比如”0,15,45”代表0秒、15秒和45秒时触发任务 -
“-“:在指定的范围内触发,比如”25-45”代表从25秒开始触发到45秒结束触发,每隔1秒触发1次
-
“*”:代表所有可能的值 -
“/”:用来指定数值的增量
-
“?”:仅被用于天(月)和天(星期)两个子表达式,表示不指定值
-
“L” :仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写如果在“L”前有具体的内容,它就具有其他的含义了。例如:“6L”表示这个月的倒数第6天
-
“W” :代表着*日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最*的一个*日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。例如,日域中的 15W 意味着 "离该月15号的最*一个*日。" 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更*。 -
“C”:代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。