首页 > 编程语言 >【Java】定时器CronExpression参数规则

【Java】定时器CronExpression参数规则

时间:2023-05-16 11:56:10浏览次数:72  
标签:触发 定时器 15 14 10 星期五 代表 CronExpression Java

参考:定时器CronExpression配置说明详解 - 心和梦的方向 - 博客园 (cnblogs.com)

 项目中经常要使用到定时器,其中CronExpression配置非常重要。现在就配置说明详细解说一下:

CronExpression表达式是由6个必需字段(秒、分、时、日、月、周)和一个可选字段(年)通过空格组成。

cronExpression表达式组成说明
序号 字段名 允许值 允许特殊字符
1 0-59 , - * /
2 0-59 , - * /
3 0-23 , - * /
4 1-31 , - * ? / L W
5 1-12 or JAN-DEC , - * /
6 1-7 or SUN-SAT , - * ? / L #
7 年(可选字段) empty, 1970-2199 , - * /

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下面对特殊字符表达意思进行解说:

* 代表所有值,比如一分钟里代表每一个分钟。

? 只允许使用在日和周的表达式中,代表不定值。使用的场景为不需要关心当前设置这个字段的值,例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?

-  代表在一个范围里,比如10-12  代表10、11、12

,代表指定多个值,比如 在周字段配置 1,3,5 代表周一、周三、周五

/  代表递增触发,比如在秒字段 0/15  代表0,15,30,45  每15秒执行一次。 5/15代表 5,20,35,50

L  只允许使用在日和周的表达式中,L是last的简称,配置在日中代表一个月的最后一天,比如1月则为31日,2月非闰年则为28日,闰年为29日那天。  

    配置在周字段里,代表7或者星期六。6L代表这个月的最后一个星期五。

W 只允许使用在日字段里,代表最近的工作日(周一到周五),比如15w, 这个月的15号是星期六,则14号(星期五)触发,如果是星期日,则16号(星期一)触发,如果是星期二,则星期二触发。

LW也可以联合使用,如果配置LW,则代表这个月最后的工作日。

# 值允许使用在周字段里,比如6#3 代表这个月的第三个星期五 (6代表星期五,#3代表这个月的第三个)

注意:月和周字段是不区分大小写(JAN Jan  MON mon)

          配置指定日和周字段里,不完整,需要在其中一个用?代替配置。

         溢出范围是支持的,但是溢出范围过大可能会出问题。比如配置22-2  晚上10点到凌晨2点, NOV-FEB 代表11月-2月。这个是支持的,但14-6,这个就溢出太对,可能会出问题。

 

下面就例子进行说明:

0 0 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分每分钟一次触发

0 0/5 14 * * ?  每天从下午2点开始到2:55分结束每5分钟一次触发

0 0/5 14,18 * * ?  每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 

0 0-5 14 * * ?  每天14:00至14:05每分钟一次触发

0 10,44 14 ? 3 WED   三月的每周三的14:10和14: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分触发开始触发 

 

具体可参照quartz源码

CronTrigger类

标签:触发,定时器,15,14,10,星期五,代表,CronExpression,Java
From: https://www.cnblogs.com/gslgb/p/17404501.html

相关文章

  • java基础(02)
    02-Java基础语法1.注释​ 注释是对代码的解释和说明文字。Java中的注释分为三种:单行注释://这是单行注释文字多行注释:/*这是多行注释文字这是多行注释文字这是多行注释文字*/注意:多行注释不能嵌套使用。文档注释:/**这是多行注释文字这是多行注释文字......
  • Java 中 ArrayList 和 LinkedList 有什么区别
    在Java中,ArrayList和LinkedList是两种常见的集合类。它们都实现了List接口,提供了类似数组的功能,可以存储任意类型的对象。虽然它们都可以实现相同的功能,但是它们的底层实现方式有所不同,因此在性能和用途上也存在一些差异。ArrayListArrayList是一个基于数组实现的动态数组,它可......
  • Java中两个字符串进行大小比较
    一:大小比较:使用String.compareTo方法如果需要忽略大小写,使用compareToIgnoreCasecompareTo()的返回值是int,它是先比较对应字符的大小(ASCII码顺序)1、如果字符串相等返回值02、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值表示前字符......
  • 汉字转换为拼音的JavaScript库的比较
    JSPinyin有提供了两个方法:<依赖mootools>1)一个是将汉字翻译为拼音,其中每一个字的首字母大写;1pinyin.getFullChars(this.value);2)一个是可以将每一个字的拼音的首字母提取出来,是大写的形式。1pinyin.getCamelChars(this.value);还可以设置是否判断多音字。只是功能比较简单,如......
  • Java生成缩略图之Thumbnailator
    Thumbnailator是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。 http://code.googl......
  • java获取目录下文件名称
    1.package2.import3.import4.import5.6./**7.*读取目录及子目录下指定文件名的路径,返回一个List8.*/9.10.publicclass11.privatestaticLoggerlogger=Logger.getLogger(FileViewer.class);12.13./**14.*@parampath15.......
  • 01-面试必会-JAVA基础篇
    1.Final有什么用?被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的2.什么是重载(Overload)和重写(Override)?重载:发生在同一个类中,方法名相......
  • Java初学者之数据类型
    今天下午看了点数据类型的东西,来这里总结一下。顺便锻炼一下自己的思维能力.首先数据类型的分类:1. 基本数据类型2.引用数据类型基本数据类型有八种:整数型:byte(1B)short(2B)int(4B)long(8B),小数型:float(4B),double(8B),布尔值:true,false(1bit),字符型:char(2B)引用数......
  • java面向对象
    java面向对象编程面向对象思想:物以类聚,分类的思维模式。思考问题首先会解决问题需要那些分类适合处理复杂的问题,适合多人的协作问题面向对象的本质:以类的方式组织代码,以对象的组织(封装)数据特征:抽象三大特性:封装,继承,多态static加了static的方法可以通过类名直接调用......
  • lombok (java 驼峰规范导致的 JSON 序列化问题)
    1、问题描述有一个接收类,出于某种原因(调用第三方接口)会使用首字母大写的情况@DatapublicclassHelloModel{ privateStrigATest; privateStrigBTest;}当我使用这个类接收一个JSON格式的数据,转换为对应的这个HelloModel类时,会出现ATest和BTest都为null的情......