Java Spring cron表达式使用详解
Java Spring cron表达式使用详解
By:授客 QQ:1033553122
语法格式
Seconds Minutes Hours DayofMonth Month DayofWeek Year
Seconds Minutes Hours DayofMonth Month DayofWeek
域字段说明
域 取值范围 允许的特殊字符
秒(Seconds) 0-59 , - * /
分(Minutes) 0-59 , - * /
小时(Hours) 0-23 , - * /
日期(DayofMonth) 1-31 , - * / L W C
月份(Month) 1-12、JAN-DEC , - * /
星期(DayofWeek) 1-7或者 SUN-SAT , - * ? / L C #
年(Year,可选) 留空, 1970-2099 , - * /
* 表示匹配该域的所有值,比如在Minutes域使用 * , 即表示每分钟都会触发事件。
? 只能用在DayofMonth和DayofWeek两个域中使用。它被用来指定“非明确的值”。因为DayofMonth和 DayofWeek会相互影响,当着两个元素互斥时,应该通过设置一个问号(?)来表明不想设置那个字段。例如,想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用 * 表示不管星期几都会触发,实际上并不是这样。
- 表示范围,例如,在Minutes域使用 5-20,表示从5分到20分钟,每分钟触发一次。又如在Hours域使用 10-12,表示从10点到12点,每小时即每个整点触发一次。
/ 用来指定渐增的值。例如在Seconds域使用 0/15,表示从第0秒开始(包括第0秒),每15秒钟触发一次,即在第0,15,30,45秒的时候各触发一次。又如在Seconds域使用5/15,表示从第5秒开始,每15秒触发一次,即在在第5,20,35,50秒的时候各触发一次。
在/前面指定0、*是等价的,即 */ 和 0/ 是等价的。
注意:触发事件执行的时间点必须是在取值范围内才有效。比如 在Minutes域使用 40/20,表示从第40分钟开始,每20分钟执行一次,但是Minutes取值范围为0-59,40+20=60,不在取值范围内,所以仅会在每小时的第40分钟执行一次。而如果设置为40/10,则会在第40,50分钟各执行一次。又如在Month域中设置 7/6,则仅会在7月出发一次。
, 用于指定枚举值。比如,在Minutes域使用5,20,则表示在第5,20分钟时各触发一次。又如,在DayofWeek使用 MON,WED,FRI,表示星期一、星期三、星期五
L 表示最后(last),只能用于DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。如果在DayofMonth域中使用 L 则表示一个月的最后一天--非闰年,对于1月来说,则是1.31,对于2月则是2.28 , 如果在DayofWeek域使用L则表示 7 或者 SAT 即星期六,如果在DayofWeek域使用L,并在L前面加上数字,它表示该月最后一个星期×,例如 6L 就表示一个月的最后一个 星期五
W 只能用于DayofMonth域。用来指定离给定日期最近的工作日(周一到周五)。比如DayofMonth域使用 15W,则表示"离该月15号最近的工作日"。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日,触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将DayofMonth域设为 1W ,而1号又是周六,触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。
LW L和W 这两个字符可以组合为 LW,用于DayofMonth域,表示该月最后一个工作日,即最后一个星期五。
# 字符可用于DayofWeek域。表示“该月第几个周×”,比如"6#3"表示该月第三个周五( 6表示周五,而#3 表示该月第三个)。又如 "2#1" 表示该月第一个周一。
注意:如果指定"5#5",该月没有第五个“周5”,该月是不会触发的,即第几个周x必须在当月范围内存在。
C 字符可用于DayofWeek和DayofMonth域,是"calendar"的缩写。它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历,那它等同于包含全部日历。例如,DayofMonth域使用 5C,则表示"日历中的第一天或者5号以后",DayofWeek域使用 1C 则表示"日历中的第一天或者周日以后"。
常见的一些例子
0 0 12 * * ? 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 15 10 * * ? * 每天上午10:15触发
0 15 10 * * ? 2005 2005年的每天上午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 2002-2005 2002年至2005年,每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
Java Spring cron表达式使用详解的更多相关文章
- Spring定时器配置与运用,及Cron表达式的详解
一:首先在spring的配置文件里配置一个定时器 <task:executor id="executor" pool-size="5" /> < ...
- cron表达式使用详解
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- quartz Cron表达式生成详解
简介 Cron作为一个Unix工具,已经存在很长一段时间了,用于实现任务调度的功能.CronTrigger类基于Cron而来. CronTrigger CronTriggers往往比SimpleTri ...
- JAVA spring 常用包作用详解(转)
转载地址:https://www.cnblogs.com/Tmc-Blog/p/6093162.html <project xmlns="http://maven.apache.org ...
- spring框架 AOP核心详解
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Asp ...
- Spring各个jar包详解
Spring各jar包详解 spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar,aspects.jar, spring-portlet.jar, and sprin ...
- Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现
前文,我们分析了Spring IOC的初始化过程和Bean的生命周期等,而Spring AOP也是基于IOC的Bean加载来实现的.本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所 ...
- Spring Boot 自定义日志详解
本节内容基于 Spring Boot 2.0. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring ...
- Java网络编程和NIO详解8:浅析mmap和Direct Buffer
Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NI ...
随机推荐
- CENTOS7常用的基础命令集合(一)
目录(?)[-] CentOS7 常用命令集合 常用命令 文件与目录操作 查看文件内容 文本内容处理 查询操作 压缩解压 yum安装器 网络相关 系统相关 系统服务启动相关 防火墙相关 RPM包管理 ...
- 背水一战 Windows 10 (109) - 通知(Tile): 按计划显示 tile 通知, 轮询服务端以更新 tile 通知
[源码下载] 背水一战 Windows 10 (109) - 通知(Tile): 按计划显示 tile 通知, 轮询服务端以更新 tile 通知 作者:webabcd 介绍背水一战 Windows 1 ...
- Dubbo 源码分析 - 自适应拓展原理
1.原理 我在上一篇文章中分析了 Dubbo 的 SPI 机制,Dubbo SPI 是 Dubbo 框架的核心.Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol.Clu ...
- 从构建分布式秒杀系统聊聊WebSocket推送通知
秒杀架构到后期,我们采用了消息队列的形式实现抢购逻辑,那么之前抛出过这样一个问题:消息队列异步处理完每个用户请求后,如何通知给相应用户秒杀成功? 场景映射 首先,我们举一个生活中比较常见的例子:我们去 ...
- Java常用的经典排序算法:冒泡排序与选择排序
一.冒泡排序 冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为 ...
- 嘿!我用python帮我干这些事
python 无疑是当下火上天的语言,但是我们又不拿来工作,那么能拿来干啥呢?我是这么干的. 1. 平时工作开发用不上,就当个计算器吧! python # 加减乘除 >>> (3 + ...
- python之集合(set)学习
集合(set) 集合是一个无序的不重复元素序列,使用大括号({}).set()函数创建集合, 注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典. 集合是无序的.不重复的.没 ...
- SpringBoot2.1整合finereport10(帆软报表)
最近,公司采购了帆软的系统,领导安排要与公司的SpringBoot框架进行整合.费了一番牛劲,终于整合成功,下面分享一下我的经验. 首先,我的开发环境是Intellij IDEA,使用的SpringB ...
- 用canvas实现红心飘飘的动画效果
两周前,项目里需要实现一个红心飘飘的点赞效果.抓耳挠腮了老半天,看了几篇大佬的文章,终于算是摸了个七七八八.不禁长叹一声,还是菜啊.先来看一下效果:(传送门进去点一波) 一.Bezier曲线运动轨迹 ...
- 从Java小白到收获BAT等offer,分享我这两年的经验和感悟
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...