Quartz.NET总结(二)CronTrigger和Cron表达式
Quartz.NET的任务调度,主要就是依靠CronTrigger和Cron表达式。Cron是已经在UNIX存在了很长一段时间,它有着强大和可靠的调度能力。CronTrigger类也正是是基于Cron调度能力。
CronTrigger使用Cron表达式。它能灵活的设置各种计划任务,比如每周一至周五,早上8点执行某项任务。然而虽然Cron表达式功能强大,灵活,但是也很混乱难懂。所以便在这里介绍Cron表达式相关的配置。希望大家帮助大家快速理解。
Cron格式
Cron表达式被用来配置CronTrigger实例。Cron表达式是一个由6,7个域(子表达式)和空格组成的字符串。每个子表达式都描述了一个单独的日程细节
域 |
是否强制 |
允许值 |
允许特殊字符 |
Seconds |
YES |
0-59 |
, - * / |
Minutes |
YES |
0-59 |
, - * / |
Hours |
YES |
0-23 |
, - * / |
Day of month |
YES |
1-31 |
, - * ? / L W |
Month |
YES |
1-12 or JAN-DEC |
, - * / |
Day of week |
YES |
1-7 or SUN-SAT |
, - * ? / L # |
Year |
NO |
empty, 1970-2099 |
, - * / |
所以,比如一个cron表达式字符串"0 0 10 ? * MON",这表示“每周一的中午10:00”。 上面的列表,可以清楚的看出,所有的域中的值都有特定的合法范围,每个域都可以单独配置。例如:Day of week(周中的天)必须有值(SUN—SAT)或是使用特殊字符,所以"0 0 10 ? * MON",就可以改成为"MON-FRI", "MON, WED, FRI"甚至是"MON-WED,SAT"。
特殊字符说明
'*' 表示域中“每个”。比如在"Minutes"域中的*表示每分钟。
'?' 用在day-of-month及day-of-week域中,表示“没有指定值”。这对于需要指定一个或者两个域的值而不需要对其他域进行设置来说相当有用。例如,我想在一个月的某一天(例如,第十),而不在乎具体是哪一天,我会把“10”放在day-of-month 域,然后“?”在day-of-week里。
'-' 指定范围,例如,“10-12”在Hours域,表示10点到12点。
',' 指定附加值,例如,“MON,WED,FRI”在day-of-week域中,表示“星期一,星期三和星期五”。
'/' 没有具体的值,用来用于指定值的增量,例如, 如果在Seconds域中,'0/15',它表示“从0开始,每隔15秒”。
'L' 只用在day-of-month及day-of-week中,这个字符是"last"的简写,但是在两个域中的意义不同。例如,在day-of-month域中的"L"表示本月的最后一天,即,一月的31日,非闰年的二月的28日。如果它用在day-of-week中,则表示"7"或者"SAT"。但是,这个字符跟在别的值后面,则表示"当月的最后的周XXX"。例如:"6L" 或者 "FRIL"都表示本月的最后一个周五。同时,也可以用来指定第某个月的最后一天的倒数第几天,如“L-3”表示某月最后一天的倒数第三天。注意:当使用'L'选项时,最重要的是不要指定列表或者值范围,否则会导致混乱。
'W' 用于day-of-week域中指定给定日(星期一星期五)最近的一天。例如:"15W",则表示“距离月中15号最近的工作日是周几”。
'#' 表示本月中的第几个周几。例如:day-of-week域中的"6#3" 或者 "FRI#3"表示“本月中第三个周五”。
相关实例
表达式 |
含义 |
0 0 12 * * ? |
每天中午12点 |
0 15 10 ? * * |
每天上午10点15 |
0 15 10 * * ? |
每天上午10点15 |
0 15 10 * * ? * |
每天上午10点15 |
0 * 14 * * ? |
每天下午2点到2点59的每分钟 |
0 0/5 14 * * ? |
每天下午2点到2点59的每5分钟 |
0 0/5 14,18 * * ? |
每天下午2点到2点59和6点到6点55的每5分钟 |
0 0-5 14 * * ? |
每天下午2点到2点05的每分钟 |
0 10,44 14 ? 3 WED |
3月份每周三下午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 L-2 * ? |
每个月最后一天的倒数第二天的上午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 |
0 0 12 1/5 * ? |
每月的第一天开始,每5天的中午12点 |
0 11 11 11 11 ? |
每年的11月11日11点11分 |
注意:'?' and '*' 在 day-of-week和day-of-month的影响
参考链接:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html
Quartz.NET总结(二)CronTrigger和Cron表达式的更多相关文章
- Quartz 和 springboot schedule中的cron表达式关于星期(周几)的不同表示
一.Quartz中cron 表达式分析: quartz 官方源码(org.quartz.CronExpression)解释: Cron expressions are comprised of 6 r ...
- CronTrigger中cron表达式使用
1.定时任务,当执行是具体时间的时候,不会立即执行,而是到指定时间执行. 2.实现Job接口时候,类中要有无参的public构造方法. 3.表达式中共用七个字段,按顺序是秒.分.时.日.月.周.年,默 ...
- Quartz中Cron表达式使用方法
Quartz中CronTrigger支持日历相关的反复时间间隔(比方每月第一个周一运行),而不是简单的周期时间间隔. 它的调度规则基于 Cron 表达式. 以下就来说一下Cron表达式的规则及使用方法 ...
- Quartz 定时任务设置某个时间区间每隔一定时间触发的cron表达式
原文:https://blog.csdn.net/yansong_8686/article/details/46991189 Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间 ...
- Quartz中时间参数说明 即Cron表达式
Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允 ...
- quartz Cron表达式生成详解
简介 Cron作为一个Unix工具,已经存在很长一段时间了,用于实现任务调度的功能.CronTrigger类基于Cron而来. CronTrigger CronTriggers往往比SimpleTri ...
- Quartz Cron表达式详解
转:https://www.jianshu.com/p/f03b1497122a 本文包含如下内容 CronTrigger简介 Cron 表达式 Cron表达式可选的值 Cron表达式的配置规则 Cr ...
- Quartz定时任务学习(七)Cron 触发器
Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 ...
- spring 定时任务 scheduled Cron表达式
转载:https://blog.csdn.net/u011789653/article/details/51153536 可以借鉴:https://www.cnblogs.com/softidea/p ...
随机推荐
- java设计模式(六) 命令模式
[命令模式]将"请求"封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作. 1,定义命令接口 package com.pattern.comm ...
- Redis系列(4)_持久化方式-RDB
一.概念 在指定的时间间隔内将内存中的数据集快照写入磁盘(满足指定时间间隔和操作次数两个条件),也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 二.配置文件(redis.con ...
- 【BZOJ 2555】SubString
http://www.lydsy.com/JudgeOnline/problem.php?id=2555 一个字符串在原串中的出现次数就是这个字符串对应后缀自动机上的状态的\(|Right|\),要求 ...
- 【BZOJ 1758】【WC 2010】重建计划 分数规划+点分治+单调队列
一开始看到$\frac{\sum_{}}{\sum_{}}$就想到了01分数规划但最终还是看了题解 二分完后的点分治,只需要维护一个由之前处理过的子树得出的$tb数组$,然后根据遍历每个当前的子树上的 ...
- 【BZOJ 3049】【USACO2013 Jan】Island Travels BFS+状压DP
这是今天下午的互测题,只得了60多分 分析一下错因: $dis[i][j]$只记录了相邻的两个岛屿之间的距离,我一开始以为可以,后来$charge$提醒我有可能会出现来回走的情况,而状压转移就一次,无 ...
- c#学习<三>:特性
特性(Attribute) 用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签.您可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它所应用的元素前 ...
- JavaScript的由来, 浏览器的20年
在很久以前那时候还没有Yahoo,Google....人们还在用28.8kbit/s的"猫"上网, 用户注册或者登录的时候所有的验证都是在服务器验证的, 如果用户注册的时候用户名或 ...
- iOS 蓝牙开发(四)BabyBluetooth蓝牙库介绍(转)
转载自:http://www.cocoachina.com/ios/20151106/14072.html 原文作者:刘彦玮 BabyBluetooth 是一个最简单易用的蓝牙库,基于CoreBlue ...
- iOS黑客技术相关
在黑客的世界里,没有坚不可破的防护系统,也没有无往不胜.所向披靡的入侵利器,有时候看似简单的问题,破解起来也许花上好几天.好几个月,有时候看似很 low 的工具往往能解决大问题:我们以实现微信自动抢红 ...
- BZOJ 1103: [POI2007]大都市meg
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2189 Solved: 1160[Submit][Sta ...