spring boot 自带的定时任务,时间表达式中代表周几的一些坑。。

项目中要用到定时任务,就直接用了spring boot自带的定时任务,没有用quartz等定时任务框架

在写表达式时,定义为每周一凌晨 1:15 分执行,但是周一查看日志,发现没有执行该任务,很奇怪。。。

后来自己手工执行了一下,但是手工执行也不是个事啊,然后跟踪进去看了下解析时间表达式的代码

网上很多都是如下解说的cron时间表达式:

都说的是  用英文或者 数字,数字 1=SUN 表示周日,我跟代码进去,发现都是瞎扯。。。

表达式中周几的位置,传数字进去,数字是几,就代表周几,上图如下:

表达式如下:

解析表达式结果如下:dayOfWeek : 2 这代表周二

我把表达式 代表周几的不问 改为周1的英文,MON,解析表达式结果如下: dayOfWeek : 1 代表周1

是不是很坑。。。。不知道是版本问题,还是大家用的都是英文,没用数字来表达周几

解析周几的时候,这里进去:

数字2 和 代表周几的英文字母去匹配,匹配不到就返回数字2

当传进去代表周一的MON时,MON和系统定义的字符串匹配,返回的就是MON在字符串数组中的下标位置,可以看到SUN在下标0的位置,MON在下标1的位置,此时返回1,代表周1:

记录一下这个小坑,用于以后避免

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值