dos啥也不会

以需求为导向学习

cron特殊配置

记录一些特殊的cron表达式配置,具体例子均以分钟为准,但是搞懂原理之后月/日/时/分/秒这几个位置只要稍作修改都是可以用的

起始时间

通常写的0/10表示从0分开始每隔10分执行一次,但是cron表达式可以使用x/y的形式来表示从x分开始每隔y分执行一次,如果需要从5分钟开每隔十分钟执行一次那么就是5/10

不可整除间隔与大时间间隔

如果时间间隔不能被60整除,例如时间间隔40分钟直接写0/40的话实际执行时间是每小时的40分一次,与实际要求不符,另一种是间隔大于60分钟的场景,在这两种场景下,可以通过拆分多条cron表达式来解决,具体计算逻辑如下

  1. 取时间间隔y和60的最小公倍数并除以60,得到n,这代表按照几个时间间隔后分钟数会重复,最后需要拆分的cron表达式最多是n条
  2. 根据上一步算出的时间,计算出x小时内所有的时间点,时间需要包含从0开始的小时数m
  3. 找到相同小时的时间点,对应cron表达式小时位是m/n,分钟位是计算出的分钟数

例如从3分钟开始间隔40分钟

  1. 取40和60的最小公倍数得到120,120/60得到2
  2. 推算实际运行时间是0:03,0:43,1:23
  3. 合并得到两条cron表达式(忽略其他部分) 0/2 3,43,1/2 23