Quartz表达式学习

 Cron表达式(Cron Expressions)

     Cron-Expressions用于配置CronTrigger实例,Cron-Expressions是一串字符串,实际上它由六个子字符串组成,子字符串间采用空格分离,从左到右分别代表:Seconds Minutes Hours Day-of-Month Month Day-of-Week。
字符串“0 0 12 ? * WED”是一个完整的Cron-Expressions例子,它所表达的意思是:每周三早上12:00。
     各个子表达式的值可以是一个范围或者列表,比如,上个例子中的Day-of-Week域的值“WED”可以用“MON-FRI”、“MON,WED,FRI”或者“MON-WED,SAT”来替代。
     所有子表达式都有指定各自的取值范围,下面对Cron-Expressions的各个子表达式和取值范围进行说明:
子表达式
            
允许的值
            
允许的特殊字符
            
Seconds
0-59
- * /
Minutes
0-59
- * /
Hours
0-23
- * /
Day-of-Month
1-31
- * ? / L W
Month
1-12或JAN-DEC
- * /
Day-of-Week
1-7或SUN-SAT
- * ? / L #
Years(Optional)
为空或1970-2099
- * /

‘-’字符表示:值的范围,10-12在Hours域中表示为:10、11和12;

‘*’字符表示:可以为任意值,‘*’在Minutes域中表示为:每分钟;

‘/’字符表示:一个左边的数值是右边基数的递增值,‘0/15’在Seconds域中表示为:第0、15、30和45秒,‘5/15’ 在Seconds域中表示为:第5、20、35和50;

‘?’字符表示:没有对该域指定值,可以为任意值,不对该域进行限制,‘?’只能用在Day-of-Month和Day-of-Week域中;

‘L’字符表示:‘L’是取‘Last’的第一个字母,也只能用在Day-of-Month和Day-of-Week域中,在Day-of-Month域 中的意思是:月份的最后一天,在Day-of-Week域中的意思是:‘7’或‘SAT’,但是在Day-of-Week域中用在另一个值后的意思是:该 月的最后一个星期几,如:‘6L’为:该月的最后一个星期五;

‘W’字符表示:‘W’是取‘Weekday’的第一个字母,只能用在Day-of-Month域中,‘W’代表了最接近给定那一天的工作日,如:在 Day-of-Month域中把值设为:15W,表示的意思是:该月的第15日最接近的工作日,所以当第15日是周六时,Trigger将在第14日的周 五执行触发,当第15日是周天时,Trigger将在第16日的周一执行触发,当第15日是工作日时,Trigger将在第15日的当天执行触发;然而在 Day-of-Month域中把值设为:1W,当第1日是周六时,Trigger将在第3日的周一执行触发,因为它不会跨越月份的范围,‘W’字符只能是 该月中的一天,而不是一个范围或天数的列表;在Day-of-Month 域中可以结合使用‘L’和‘W’字符‘LW’,‘LW’表示:月份的最后一个工作日;

‘#’字符表示:月份的第几个星期几,只能用在Day-of-Week域中,如:在Day-of-Week域中把值设为:6#3,表示的意思是:该月的第3个星期5(day 6=Friday and “#3”=the 3rd one in the month);2#1表示的意思是:该月的第1个星期1;4#5表示的意思是:该月的第5个星期3;需要注意:不能把值设为“#5”,因为一个月中不可能有第5个星期3,如果这样设置,将导致该月无法执行触发;

下面举一些完整的Cron- Expressions例子:

表达式

意思

0 0 12 * * ?每天12:00执行触发
0 15 10 ? * *每天10:15执行触发
0 15 10 * * ?每天10:15执行触发
0 15 10 * * ? *每天10:15执行触发
0 15 10 * * ? 20052005年的每天10:15执行触发
0 * 14 * * ?每天从14:00到14:59每隔1分钟执行一次触发
0 0/5 14 * * ?每天从14:00到14:59每个5分钟执行一次触发
0 0/5 14,18 * * ?每天从14:00到14:59和18:00到18:59每隔5分钟执行一次触发
0 0-5 14 * * ?每天从14:00到14:05每隔1分钟执行一次触发
0 10,44 14 ? 3 WED3月的每个星期3的14:10和14:44分别执行一次触发
0 15 10 15 * ?每月的第15日10:15执行一次触发
0 15 10 L * ?每月最后一天的10:15执行一次触发
0 15 10 ? * 6L每月的最后一个星期5的10:15执行一次触发
0 15 10 ? * 2002-20052002、2003、2004、2005年的每个月的最后一个星期5的10:15执行一次触发
0 15 10 ? * 6#3每月的第3个星期5的10:15执行一次触发

当Schedule中要求比较复杂,采用单个的Trigger无法实现时,可以配置多个的Trigger来实现,比如:每天的9:00到10:00之间每 隔5分钟执行一次触发,并且在每天的13:00到22:00之间每隔20分钟执行一次触发,配置2个Trigger并把2配置好的2个Trigger注册 到相同的Job中就可以很简单的实现上述情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的精简博客系统,源码+数据库+毕业论文+视频演示 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前企业对于博客信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于Springboot开发的精简博客系统,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本系统主要使用B/S开发模式,在idea开发平台上,运用Java语言设计相关的系统功能模块,MySQL数据库管理相关的系统数据信息,SpringBoot框架设计和开发系统功能架构,最后通过使用Tomcat服务器,在浏览器中发布设计的系统,并且完成系统与数据库的交互工作。本文对系统的需求分析、可行性分析、技术支持、功能设计、数据库设计、功能测试等内容做了较为详细的介绍,并且在本文中也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高企业的工作效率,提升用户的使用体验,因此在现实生活中运用本系统具有很大的使用价值。 关键词:博客管理;Java语言;B/S结构;MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值