Cron表达式

Cron表达式

前言

最近在看 @Schedule 注解的源码的时候,其中设置定时任务有涉及到 cron 表达式,发现自己只会一丢丢~

然后自己去详细了解 并 玩了一下这个 cron 表达式,记录一下,也更方便自己掌握。

Cron表达式

cron 表达式,是一个字符串,由 6 个空格、7 个域组成,每一个域代表一个时间含义

有以下两种语法格式:(一般 Year 可以省略,所以常见的为下面的第二种方式)

Seconds Minutes Hours Day Month Week Year

Seconds Minutes Hours Day Month Week 

具体说明:

名称分钟小时星期
取值0-590-590-231-30(31)1-121-71970-2099
通配符, - * /, - * /, - * /, - * / ? L W, - * /, - * / L #, - * /

通配符说明:

  • ,:列举出触发的值

  • 0,10 * * * * *:每分钟的第0s、10s触发

  • 最近触发时间

    2022-04-21 15:47:00
    2022-04-21 15:47:10
    2022-04-21 15:48:00
    2022-04-21 15:48:10

  • -:指定具体范围

    • 1-5 * * * * *:每分钟的第1s、2s、3s、4s、5s触发(即 1-5s 触发)

    • 最近触发时间:

      2022-04-21 15:48:01
      2022-04-21 15:48:02
      2022-04-21 15:48:03
      2022-04-21 15:48:04
      2022-04-21 15:48:05
      2022-04-21 15:49:01
      2022-04-21 15:49:02
      2022-04-21 15:49:03
      2022-04-21 15:49:04
      2022-04-21 15:49:05

  • *:所有的值都包括

    • * * * * * *:每分钟每秒都触发

    • 最近触发时间

      2022-04-21 15:47:55
      2022-04-21 15:47:56
      2022-04-21 15:47:57
      2022-04-21 15:47:58
      2022-04-21 15:47:59
      2022-04-21 15:48:00

  • /:指定增量

    • 3/10 * * * * *:从第3s开始,每隔10s 执行一次

    • 最近触发时间

      2022-04-21 15:48:23
      2022-04-21 15:48:33
      2022-04-21 15:48:43
      2022-04-21 15:48:53
      2022-04-21 15:49:03

  • :表示不指定(注意冲突)

  • L:表示last,月份中表示最后一天31或30,星期3L表示本文最后一个星期三

    • 0 0 0 L * ? *:本月最后一天的0时0秒(凌晨)触发

    • 最近触发时间

      2022-04-30 00:00:00
      2022-05-31 00:00:00
      2022-06-30 00:00:00
      2022-07-31 00:00:00
      2022-08-31 00:00:00

  • W:只能用在日中,表示最接近指定天的工作日

    • 0 0 0 2W * ? *: 每月 2 号最近的那个工作日

    • 最近触发时间

      2022-05-02 00:00:00
      2022-06-02 00:00:00
      2022-07-01 00:00:00
      2022-08-02 00:00:00

  • #:只能用在星期中,表示这个月的第几个周几,例如1#1表示这个月的第1个周1

其实各个使用还有一些各个时间设置冲突问题需要注意,具体使用可以在下面的网站上编辑验证可以再然后使用

Cron 表达式编辑验证

一些例子:

0 * * * * ?     每1分钟触发一次
0 0 * * * ?     每天每1小时触发一次
0 0 10 * * ?    每天10点触发一次
0 * 14 * * ?    在每天下午2点到下午2:59期间的每1分钟触发
0 30 9 1 * ?    每月1号上午9点半
0 15 10 15 * ?  每月15日上午10:15触发
*/5 * * * * ?   每隔5秒执行一次
0 */1 * * * ?   每隔1分钟执行一次
0 0 5-15 * * ?  每天5-15点整点触发
0 0/3 * * * ?   每三分钟触发一次
0 0 0 1 * ?     每月1号凌晨执行一次

相关阅读:

Linux之组、权限、任务调度命令

Spring 原理之 @Scheduled(定时任务)

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值