springboot项目有定时器的内置API
注解:
@Scheduled(cron = "")
定时器格式 : 秒 分 小时 日 月 星期 年(可选)
各个时间可用值及可用符号
秒 : 0-59 ; - * / ,
分 : 0-59 ; - * / ,
时 : 0-23 ; - * / ,
日 : 1-31 ;- * / ? L W C ,
月 : 1-12 OR JAN-DEC ; - * / ,
周 : 1-7 OR MON-SAT ; - * / ? L C , #
年 : 1970-2099 ; - * / ,
可用符号解释
- 用来指定一个值的范围 ; 比如在小时设置10-12 表示 10点-12点
* 用于所有字段 ; 比如在分字段就表示"每一分钟"的含义
/ 用来指定一个值的增加幅度 ; 比如"0/15" 表示每15 , "5/15" 从5开始每15.
? 用来指定不明确的值 , 用于'日'和'周'之中,这两个值只能存在一个.
, 用来指定数的个数 ; 比如分字段写"3,5" 表示第3和第5分钟.
L 用于'日'和'周'两个字段,在'日'中表示 一个月的最后一天 ; 在'周'中表示 星期天
特殊 : 在'周'中,使用数字+L 表示 该月最后一个星期几 例 '6L' 该月最后一个星期五
W 用于'日'字段 指定给定日期最近的工作日 . 例 15W 离15号最近的工作日.
说明 : 如果15号是周六 则 会在14号触发
如果15号是周日 则 会在16号触发
如果15号是工作日 会在当天触发
如果指定 1W 而1号刚好是周六不会往前触发 只会3号触发.
L 和 W 组合用于'日' : 该月最后一个工作日
# 用于'周'字段 , 表示该月第几个周几 例 : 5#3 该月第三个周四 #后的数字超过范围是不会触发的.
举个栗子 :
"0 0 12 * * ?" 每天中午十二点触发
"0 15 9 ? * *" 每天早上9:15触发
"0 15 9 * * ?" 每天早上9:15触发
"0 15 9 * * ? *" 每天早上9:15触发
"0 15 9 * * ? 2005" 2005年的每天早上9:15触发
"0 * 14 * * ?" 每天从下午2点开始到2点59分每分钟一次触发
"0 0/5 14 * * ?" 每天从下午2点开始到2:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?" 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?" 每天14:00至14:05每分钟一次触发
"0 15 9 15 * ?" 每月15号的9:15触发
"0 15 9 L * ?" 每月的最后一天的9:15触发
"0 15 9 ? * 6L" 每月最后一个周五的9:15