0
点赞
收藏
分享

微信扫一扫

通俗易懂corn表达式

whiteMu 2022-04-01 阅读 50

文章目录

1. 基础表达式

基础表达式:* * * * * *

各位含义:秒 分 时 日 月 周 年(可省略)
含义
涉及通配符:

*:任意值

执行时机:每秒触发

2. 指定时刻表达式

2.1 指定枚举值

基础表达式:* 30 9,17 * * *

各位含义:秒 分 时 日 月 周 年(可省略)

涉及通配符:

*:任意值
,:枚举值

执行时机:每天的早上9:30和下午17:30触发

2.2 指定范围

基础表达式:* 30 9-12 * * *

各位含义:秒 分 时 日 月 周 年(可省略)

涉及通配符:

*:任意值
-:表示范围

执行时机:每天的9:3010:3011:3012:30触发

4. 固定频率表达式

4.1 指定初始时间

基础表达式:* 0/5 * * * *

各位含义:秒 分 时 日 月 周 年(可省略)

涉及通配符:

*:任意值
/:表示起始时间开始触发,每隔固定时间触发一次

执行时机:每小时0分开始触发,之后每过5分钟触发一次

4.2 不指定初始时间

基础表达式:* */5 * * * *

各位含义:秒 分 时 日 月 周 年(可省略)

涉及通配符:

*:任意值
/:表示起始时间开始触发,每隔固定时间触发一次

执行时机:立刻触发,之后每过5分钟触发一次

5. 什么时候用"?"

我们在各种资料里经常见到* * * * * ?这种形式的corn表达式,这里的?也表示"任意值",那和*有什么区别呢?
因为日期和星期在"都指定"或"都不指定"的情况下肯定是没有问题的,没有二义性。当只指定了一方,而另一方为*的情况下,会有二义性,结果相当于没有指定。比如指定了日期,但没有指定星期,则不管周几都能触发;而指定了星期,没有指定日期,则每一天也能触发 。
所以正确的做法是在指定日期的时候,把对应的星期也指定上,或者指定星期的时候把日期也指定上,但这样做太麻烦了,也不现实,所以就有了?这个通配符,在单独指定日期或星期的时候使用。

  • 如何表示每周一早上8:30
    正确答案:* 30 8 ? * MON

  • 如何表示每月1号早上8:30
    正确答案:* 30 8 1 * ?

举报

相关推荐

0 条评论