Spring定时器 Cron表达式的用法

前言

Cron表达式是一种用于描述定时任务执行时间的字符串格式,这种表达式基于时间字段来定义任务应该在哪些时间点执行,通常包含六个或七个用空格隔开的字段,分别代表秒、分钟、小时、日期、月份和星期(年份是可选的)。

每个字段都可以是数字、星号、逗号、减号、正斜杠和问号等特殊字符的组合。星号代表匹配任意值,逗号用于列举值,减号表示值范围,正斜杠表示步长,问号用于日期和星期字段作为占位符。例如,一个Cron表达式 "0 0 12 ? * WED" 表示每星期三的中午12:00执行任务。

SUN-SAT(周中天)  :1-7(1 = 星期日) 和 SUN, MON, TUE, WED, THU, FRI, SAT

JAN-DEC(月)  :1-12 和 JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC

一、语法结构

Cron表达式的基本语法可以表示为{秒数} {分钟} {小时} {日期} {月份} {星期} {年份}(年份可为空)。具体来说:

秒数:0~59之间的整数,用于指定分钟内的具体秒数。
分钟:0~59之间的整数,用于指定小时内的具体分钟数。
小时:0~23之间的整数,用于指定一天中的具体小时数。
日期:1~31之间的整数,用于指定每月中的具体日期。
月份:1~12之间的整数,用于指定具体月份。
星期:0(代表周日)~7(代表周一),用于指定具体星期数。

二、特殊字符

  • ?字符: 表示不确定的一个值,即任意一个合法值, 如每月的8号触发一个操作,但不关心是周几,我们可以这么设置 0 0 0 8 * ?。
  • ,字符: 表示数个值,即枚举,如在分域中定义8,12,35, 表示分别在第8分,第12分 第35分执行该定时任务。
  • -字符: 表示连续的范围,如在时域中定义20-22,表示在20,21,22点每小时触发一次。
  • *字符: 表示所有值,可解读为 “每”, 如在分域中定义*,表示每分钟都会触发任务,在日域中定义*,表示每天触发任务。
  • /字符: 表示指定一个值的增加幅度。n/m表示从n开始,每次增加m, 如在 秒上定义5/10 表示从 第 5 秒开始 每 10 秒执行一次。
  • #字符: 表示表示每月的第几个周几,只能作用于周上。例如2#3表示在每月的第三个周二。
  • L字符: 表示表示英文中的LAST 的意思,只能在 日和周中使用, 其中,在日中设置表示当月的最后一天,在周中设置表示周六,相当于7或SAT
  • W字符: 表示离给定日期最近的工作日(周一到周五), 只能在日中使用且只能用在具体的数字之后. 如在日上置15W,表示离每月15号最近的那个工作日触发。假如15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果是1W就只能往本月的下一个最近的工作日推不能跨月往上一个月推。

三、常用cron表达式例子

[A秒] [B分] [C时] [D日] [E月] [F星期] [G年]0 0 10,14,16 * * ?  每天上午10点,下午2点,4点0 0 12 ? * WED  表示每个星期三中午12点0 0 12 * * ?  每天中午12点触发0 15 10 ? * *  每天上午10:15触发0 15 10 * * ?  每天上午10:15触发0 15 10 * * ? 2022  2022年的每天上午10:15触发0 * 14 * * ?  在每天下午2点到下午2:59期间的每1分钟触发0 0/5 14 * * ?  在每天下午2点到下午2:55期间的每5分钟触发0 0/5 14,18 * * ?  在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发0 0-5 14 * * ?  在每天下午2点到下午2:05期间的每1分钟触发0 10,44 14 ? 3 WED  每年三月的星期三的下午2:10和2:44触发0 15 10 ? * MON-FRI  周一至周五的上午10:15触发0 15 10 15 * ?  每月15日上午10:15触发0 15 10 L * ?  每月最后一日的上午10:15触发0 15 10 ? * 6L  每月的最后一个星期五上午10:15触发0 15 10 ? * 6L 2022-2023  2022年至2023年的每月的最后一个星期五上午10:15触发0 15 10 ? * 6#3  每月的第三个星期五上午10:15触发0 0 23 * * ?  每天23点执行一次0 0 1 * * ?  每天凌晨1点执行一次0 0 1 1 * ?  每月1号凌晨1点执行一次0 0 23 L * ?  每月最后一天23点执行一次0 0 1 ? * L  每周星期天凌晨1点执行一次0 20,35,55 * * * ?  在20分、35分、55分执行一次0 0 0,13,18,21 * * ?  每天的0点、13点、18点、21点都执行一次0/2 * * * * ?   表示每2秒 执行任务0 0/2 * * * ?    表示每2分钟 执行任务0 0 2 1 * ?   表示在每月的1日的凌晨2点调整任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式系统中AI可以提高开发效率方法

未来是 AI 的时代,博主最近写代码都喜欢用 AI 写个草稿,修修改改就能用,大幅提高了工作效率。举个例子: 指令:写一个使用 kfifo 的内核模块 #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/kfifo.…

系统架构最佳实践 -- 相关JAVA架构

1. java 类加载器架构 2. JVM 架构 3. Java 技术体系 4. 线程运行架构 5. Java 体系&#xff08;编译与运行&#xff09;结构 6. JMS 技术架构 7. JMX 技术架构 8. Spring 架构 9. Hibernate 架构 10. ibatis 架构 11. Struts2 架构 12. Struts1 架构 13. JBPM 14. EJB 技术架构…

万字总结!Docker简介及底层关键技术剖析

本文首发在个人博客上&#xff1a;万字总结&#xff01;Docker简介及底层关键技术剖析 Docker 简介 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#x…

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

滚动条是用户界面中的图形化组件&#xff0c;用于指示和控制内容区域的可滚动范围。当元素内容超出其视窗边界时&#xff0c;滚动条提供可视化线索&#xff0c;并允许用户通过鼠标滚轮、触屏滑动或直接拖动滑块来浏览未显示部分&#xff0c;实现内容的上下或左右滚动。它在保持…

补档 -- 测试的分类(1)

最近有很多人私信我说: 灰灰你什么时候写测试分类阿, 本来我要开始肝性能测试的, 我一看, 奥, 之前摸鱼忘写了, 所以这里补档(叶问指着一边笑.jpg). 总览 标红的需要注意一下. 为什么要对软件测试进行分类? 软件测试是软件生命周期的一个重要环节, 具有较高的复杂性, 对于软…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 &#x1f335;hoare版本 &#x1f335;挖坑法 ​编辑 &#x1f335;前后指针版本 ​编辑 3.2 快速排序优化 &#x1f33b;三数取中法选key 3.4 快速排序…

如何在群晖NAS部署office系统办公服务并实现无公网IP远程编辑文件

文章目录 本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是&#xff1a; 1.Word&#xff0c;PPT&#xff0c;Excel等重要文件存在本地环境&#xff0c;如何在编…

宝塔面板MYSQL自动停止解决办法

宝塔面板MYSQL自动停止解决办法 在使用宝塔的过程中&#xff0c;经常会遇到了 MySQL 自动停止的问题&#xff0c;尤其是配置低一些的服务器。导致 MySQL 停止的情况有很多种&#xff0c;这里不再多述。 下面教大家怎么解决这一问题。在宝塔的计划任务里添加一段 shell 命令&a…

Umi.js:登录之后需要手动刷新权限菜单才能渲染

在使用Umi.js开发后台管理页面时&#xff0c;用户登录之后&#xff0c;总是需要手动刷新一次页面&#xff0c;才能够拿到全局状态/权限信息。 问题描述 结合使用umi/plugin-layout和umi/plugin-access&#xff0c;登录进入页面&#xff0c;配置的权限菜单未渲染&#xff0c;需…

BPMN2.0 任务-任务监听器

任务监听器(task listener)用于在特定的任务相关事件发生时,执行自定义的Java逻辑或表达式。 任务监听器只能在流程定义中作为用户任务的子元素。请注意,任务监听器是一个Flowable自定义结构,因此也需要作为BPMN 2.0 extensionElements,放在flowable命名空间下。 <us…

javaWeb项目-大药房管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java语言简介 Ja…

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 一、检查服务是否开启 找到 【Docker Desktop Service】&#xff0c;然后&#xff0c;启动他&#xff1b; 你也可以直接设置为“自动” 找到服务&#xff0c;右键》属性》启动类型&#xff1a;自动》点击…

医疗实施-项目管理03-项目启动会

项目启动会 内部启动会目标过程详述作用 外部启动会目标过程详述作用 一般在项目完成从销售完移交到项目实施部之后&#xff0c;需要先后进行项目内部启动会与外部启动会的进行。这两个启动会对整个项目实施起到的推动作用&#xff0c;我依次介绍一下这两个启动会的目标、过程方…

三. TensorRT基础入门-TensorRT简介

目录 前言0. 简述1. 什么是TensorRT2. TensorRT的工作流介绍3. TensorRT的一些限制总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习课程第三章—TensorRT 基础入门&#xf…

三、Flask模型基础

ORM 创建模型 # exts.py:插件管理 # 扩展的第三方插件 # 1.导入第三方插件 from flask_sqlalchemy import SQLAlchemy # ORM插件 from flask_migrate import Migrate # 2. 初始化 db = SQLAlchemy() # ORM migrate = Migrate() # 数据迁移 # 3. 和app对象绑定 def init_ex…

kafka实验部署

一、前期准备 二、kafka实验 在zookeeper后继续进行操作 2.1 为ndoe1、node2、node3作出部署 2.1.1 解压kafka压缩包&#xff08;node1举例&#xff09; 2.1.2 操作 将解压后的kafka移动到kafka&#xff0c;进入到kafka下的config中&#xff0c;复制文件 2.1.2.1 编辑server.pr…

【笔试训练】day7

1.在字符串中找出连续最长的数字串 思路&#xff1a; 简单双指针&#xff0c;随便怎么暴力 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include<string> using namespace std;int main() {string str;cin >> str;int ans …

ai智能电销机器人,主要体现的价值是什么

人工智能逐渐走入大家的视线&#xff0c;越来越多的机器人出现在我们生活中。器人活跃在各行各业中&#xff0c;降低了人工成本&#xff0c;代替人类去做那些既枯燥又浪费时间的重复性的工作&#xff0c;那么AI智能机器人的价值主要体现在哪些方面呢&#xff1f;我们和小编kela…

聚道云软件连接器助力医疗器械有限公司打通金蝶云星辰与飞书

摘要 聚道云软件连接器成功将金蝶云星辰与飞书实现无缝对接&#xff0c;为某医疗器械有限公司解决采购订单、付款单同步、审批结果回传、报错推送等难题&#xff0c;实现数字化转型升级。 客户介绍 某医疗器械有限公司是一家集研发、生产、销售为一体的综合性医疗器械企业。…

【linux运维】系统常见管理命令

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习基本的shell编程和linux命令&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于b站大学——linux运维课程进行的&#xff0c;…