关于Cron表达式的个人笔记

Cron表达式含义

秒 分 时 日 月 星期 年

  • 表达式中的年,在不指定的情况下,直接忽略即可;如下列子都不指定年
  • 可以五位:
    此时不包含秒的信息
    例如每天10:15执行定时任务
    15 10 * * *
  • 可以六位,包含秒(例如 Quartz Scheduler):
    每天10:15:16执行定时任务
    16 15 10 * * *

Cron表达式中的*?,有什么区别,能否混用?

在 Cron 表达式中,* 和 ? 都表示“匹配任何值”,但它们的用法和含义有些不同。

  1. *(星号):表示“每个可能的值”。
    • 例如,在分钟字段上写 *,表示“每分钟都匹配”
    • 在日字段上写 *,表示“每天都匹配”
  2. ?(问号):表示“没有指定特定值”
    • 主要用于日期字段和星期字段中,表示“不指定具体值”。
    • 它通常用于避免和其他字段的冲突。例如,在日字段使用 ?,如果你在星期字段上已指定某个特定值,就可以避免日和星期之间的冲突。

能否混用:

  • 是的,可以混用,但需要遵循规则。通常,? 只用于“日”和“星期”字段,用来避免二者的冲突,而*可以在所有字段中使用。
    区别:
    * 是“每个值”,适用于任何字段。
    ? 是“不指定”,只适用于“日”和“星期”字段,目的是避免它们之间的相互影响。

举个例子:
0 12 * * ?:每天中午12点触发,不指定具体的星期几(用 ? 代替星期字段)。
0 12 1 * *:每月1号中午12点触发,不指定具体的星期几(使用 * 在星期字段表示“每个星期”)。

表示范围及应用

秒(0-59)
分钟(0-59)
小时(0-23)
日期(1-31)
月份(1-12 或 JAN-DEC)
星期(0-7 或 SUN-SAT,0 和 7 都表示星期日)
年份(可选字段,留空或 1970-2099)

  • *:表示任何值。例如在分钟字段使用 * 表示每分钟都触发。
  • ,:用来列出枚举值。例如在星期字段使用 MON,WED,FRI 表示星期一、星期三和星期五触发。
  • -:表示一个范围。例如在小时字段使用 9-17 表示在 9 点到 17 点之间触发。
  • /:表示步进值。例如在分钟字段使用 */5 表示每 5 分钟触发一次。
  • ?:表示不指定值,通常用于日期和星期字段中的一个,以避免冲突。
  • L:表示最后,例如在日期字段使用 L 表示月份的最后一天。
  • W:表示最接近指定日的工作日(周一至周五)。例如在日期字段使用 15W 表示最接近每月 15 日的工作日。
  • #:表示每月的第几个星期几。例如在日期字段使用 2#1 表示每月的第一个星期二。

举例
0 15 10 ? * MON-FRI‌
:
含义:周一到周五上午 10:15 触发。
解释:秒(0),分钟(15),小时(10),日期(不指定),月份(每月),星期(周一到周五)。

‌0 0 0 L * ?‌
:
每月最后一天零点触发。

‌0 0 0 1W * ?‌
:
含义:每月最近一个星期一凌晨 0 点触发。
解释:秒(0),分钟(0),小时(0),日期(最近一个星期一),月份(每月),星期(不指定)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

录大大i

如果文章有用,还请鼓励一下作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值