cron表达式详解(详细版)

Cron表达式 是一种用于指定任务在何时执行的格式化字符串。它由5到6个字段组成,每个字段代表时间的不同部分。以下是Cron表达式的书写规则和示例:

1.Cron表达式格式

一个标准的Cron表达式包含最多6个字段,这些字段代表任务执行的不同时间组件,按顺序如下:

复制代码
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 日 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 星期 (0 - 6) (周日到周六)
│ │ │ │ │
│ │ │ │ │
* * * * * *
第6个字段是可选的,以周为单位表示任务应该在哪一周执行。

2.字段规则和取值

每个字段都有一组允许的值,这些值表示任务将在哪个时间单位内执行。可以使用单个值、一系列值或通配符来指定这些值。以下是每个字段的规则和常见的取值:

  • 分钟(0 - 59):允许的值为0 - 59。

  • 小时(0 - 23):允许的值为0 - 23。

  • 日(1 - 31):允许的值为1 - 31。

  • 月份(1 - 12):允许的值为1 - 12,也可以使用缩写名称诸如JAN,FEB等。

  • 星期(0 - 6):允许的值为0 - 6,其中0表示周日,1表示周一,以此类推。也可以使用缩写名称,如SUN,MON等。

  • :可选的。允许的值为1970 - 2099。

还有一些特殊字符,可以在Cron表达式中使用:

  • * 表示所有可能的值,比如在分钟字段上设置"*"表示每分钟都会触发。

  • , 可以用来分隔多个取值,比如在小时字段上设置"1,3,4,7"表示1点、3点、4点和7点各触发一次。

  • - 可以用来表示范围,比如在日字段上设置"5-10"表示5号到10号每天都会触发。

  • / 可以用来表示步长,比如在分钟字段上设置"0/15"表示每隔15分钟触发一次,而"*/15"则表示每隔15分钟从0开始触发。

  • ? 只能用在日期和星期字段上,表示不指定值,留空即可。实际上相当于占位符。

  • # 只能用在星期字段上,表示第几个星期几,比如"6#3"表示第三个星期五(6表示星期五,3表示第三个)。

3.详细示例

以下是几个Cron表达式的示例:

  • 0 0/15 8-19 * * ?:从早上8点到晚上7点之间,每隔15分钟触发一次。

  • 0 0 12 1/1 * ?:每天中午12点触发。

  • 0 15 10 ? * MON-FRI:周一至周五的每天上午10:15触发。

  • 0 15 10 ? * 6#3:每个月的第三个星期五上午10:15触发。

  • 0 0 8-10 * * ?:每天上午8点到10点之间,每小时触发一次。

  • 0 0/30 8-10 5,20 * ?:每月的5号和20

相关推荐
莫得感情 o1 小时前
并发 14 · 收官:虚拟线程与结构化并发
java·并发
聚美智数1 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
xierui1231232 小时前
AI Agent 隐私架构:本地化重点为什么是登录态与执行权限
java·人工智能·网络安全·架构
cfm_29142 小时前
Spring AI Tool 调用架构全解
java·人工智能·spring
sun༒2 小时前
Spring @Scheduled 定时任务详解:Cron表达式、执行顺序、优先级与并行调度
java·后端·spring
一次旅行3 小时前
DeepSeek‑V4‑Flash‑Vision‑Exp 小白入门实战|3种传图方式、完整可跑代码、避坑排障
java·前端·人工智能
野生技术架构师3 小时前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
AI人工智能+电脑小能手3 小时前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
奥莱维3 小时前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
工业一体机老司机3 小时前
Linux工业一体机自启动服务配置:systemd服务单元编写与开机优化实战
java·linux·服务器