一文理清cron表达式

上篇讲了spring的任务调度功能,里面有cron表达式能更全面的处理我们的需求,今天来给大家讲讲cron表达式。

所有的Spring cron表达式都必须符合相同的格式,如* * * * * *,由六个空格分隔的时间和日期字段组成,每个字段都有自己的有效值范围:

 ┌───────────── 秒 (0-59)
 │ ┌───────────── 分 (0 - 59)
 │ │ ┌───────────── 时 (0 - 23)
 │ │ │ ┌───────────── 日(月份的第几天) (1 - 31)
 │ │ │ │ ┌───────────── 月份 (1 - 12) (或 JAN-DEC)
 │ │ │ │ │ ┌───────────── 星期 (0 - 7)
 │ │ │ │ │ │          (07 是星期天, 或者使用 MON-SUN)
 │ │ │ │ │ │
 * * * * * *

cron表达式的规则

  • 字段可以是星号 (*),星号总是表示 “开始-结束”。对于月份中的某一天或星期字段,可以使用问号 (?) 来代替星号。
  • 逗号 (,) 用于分隔列表中的项目。
  • 用 (-) 分隔的两个数字表示一个数字范围。指定的范围是包含在内的。
  • 在一个范围(或*)后加上/,表示数字值在范围内的间隔。
  • 英文名称也可用于月份和星期字段。使用特定日期或月份的前三个字母(不区分大小写)。
  • 日和星期字段可以包含 L 字符,该字符具有不同的含义
    • 在日字段中,L 代表该月的最后一天。如果后面跟一个负偏移量(即L-n),则表示该月的倒数第N天。
    • 在星期的字段中,L 代表一周的最后一天。如果前面有一个数字或三个字母的名称(dL 或 DDDL),则表示的是该月的最后一个星期(d 或 DDD)。
  • 日字段可以是 nW,表示距离 n 月中的某一天最近的工作日。 如果 n 是星期六,则产生之前的星期五。 如果 n 落在星期日,则产生下一个星期一,如果 n 为 1 并且落在星期六,也会发生这种情况(即:1W 代表该月的第一个工作日)。
  • 如果日字段为LW,则表示该月的最后一个工作日。
  • 星期字段可以是 d#n(或 DDD#n),表示该月第 d(或 DDD)周的第 n 天。

给大家举个例子

cron表达式含义
0 0 * * * *每时每刻
*/10 * * * * *每十秒钟
0 0 8-10 * * *每天8点、9点和10点
0 0 6,19 * * *每天上午6:00和下午7:00
0 0/30 8-10 * * *每天 8:00、8:30、9:00、9:30、10:00 和 10:30
0 0 9-17 * * MON-FRI周一至周五
0 0 0 25 DEC ?每年圣诞节(12月25日)零时
0 0 0 L * *每月最后一天零时
0 0 0 L-3 * *每月倒数第三天零时
0 0 0 * * 5L每月最后一个星期五零时
0 0 0 * * THUL本月最后一个星期四零时
0 0 0 1W * *每月第一个工作日零时
0 0 0 LW * *本月最后一个工作日零时
0 0 0 ? * 5#2每月第二个星期五零时
0 0 0 ? * MON#1每月第一个星期一零时
0 0 0 ? * 6L *每月的最后一个星期五零时

需要注意的是,国外的星期跟国内的不一样,他们是1-7表示星期天到星期六

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值