cron 表达式的格式

Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。

  1. UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz cron 表达式
  2. 存放执行计划。引用了 cron 表达式的 CronTrigger 在计划的时间里会与 job 关联上。
  3. 另一个与 UNIX cron 表达式的不同点是在表达式中支持域的数目。UNIX 给出五个域(分、时、日、月和周),Quartz 提供七
  4. 个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。
  5. Quartz Cron 表达式支持到七个域
  6. 名称 是否必须 允许值 特殊字符
  1. 0-59 , - * /
  2. 0-59 , - * /
  3. 0-23 , - * /
  4. 1-31 , - * ? / L W C
  5. 1-12 JAN-DEC , - * /
  6. 1-7 SUN-SAT , - * ? / L C #
  7. 1970-2099 , - * /
  1. 月份和星期的名称是不区分大小写的。FRI fri 是一样的。
  2. 域之间有空格分隔,这和 UNIX cron 一样。无可争辩的,我们能写的最简单的表达式看起来就是这个了:
  3. * * * ? * *
  4. 这个表达会每秒钟(每分种的、每小时的、每天的)激发一个部署的 job

理解特殊字符

同 UNIX cron 一样,Quartz cron 表达式支持用特殊字符来创建更为复杂的执行计划。然而,Quartz 在特殊字符的支持上比标准 UNIX cron 表达式更丰富了。

* 星号

  1. 指示着你想在这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发这个 trigger
  2. 表达式样例:
  3. 0 * 17 * * ?
  4. 意义:每天从下午5点到下午5:59中的每分钟激发一次 trigger。它停在下午 5:59 是因为值 17 在小时域上,在下午 6
  5. 时,小时变为 18 了,也就不再理会这个 trigger,直到下一天的下午5点。
  6. 在你希望 trigger 在该域的所有有效值上被激发时使用 * 字符。

? 问号

  1. 只能用在日和周域上,但是不能在这两个域上同时使用。你可以认为 ? 字符是 "我并不关心在该域上是什么值。" 这不同于星
  2. 号,星号是指示着该域上的每一个值。? 是说不为该域指定值。
  3. 不能同时这两个域上指定值的理由是难以解释甚至是难以理解的。基本上,假定同时指定值的话,意义就会变得含混不清了:考虑
  4. 一下,如果一个表达式在日域上有值11,同时在周域上指定了 WED。那么是要 trigger 仅在每个月的11号,且正好又是星期三
  5. 那天被激发?还是在每个星期三的11号被激发呢?要去除这种不明确性的办法就是不能同时在这两个域上指定值。
  6. 只要记住,假如你为这两域的其中一个指定了值,那就必须在另一个字值上放一个 ?。
  7. 表达式样例:
  8. 0 10,44 14 ? 3 WEB
  9. 意义:在三月中的每个星期三的下午 2:10 下午 2:44 被触发。

, 逗号

  1. 用来在给某个域上指定一个值列表的。例如,使用值 0,15,30,45 在秒域上意味着每15秒触发一个 trigger
  2. 表达式样例:
  3. 0 0,15,30,45 * * * ?
  4. 意义:每刻钟触发一次 trigger

/ 斜杠

  1. 用于时间表的递增的。我们刚刚用了逗号来表示每15分钟的递增,但是我们也能写成这样 0/15
  2. 表达式样例:
  3. 0/15 0/30 * * * ?
  4. 意义:在整点和半点时每15秒触发 trigger

- 中划线

  1. 用于指定一个范围。例如,在小时域上的 3-8 意味着 "3,4,5,6,7 和 8 点。" 域的值不允许回卷,所以像 50-10 这样的
  2. 值是不允许的。
  3. 表达式样例:
  4. 0 45 3-8 ? * *
  5. 意义:在上午的3点至上午的8点的45分时触发 trigger

L 字母

  1. 说明了某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天。例如,当月域
  2. 上指定了 JAN 时,在日域上的 L 会促使 trigger 131号被触发。假如月域上是 SEP,那么 L 会预示着在930号触
  3. 发。换句话说,就是不管指定了哪个月,都是在相应月份的时最后一天触发 trigger
  4. 表达式 0 0 8 L * ? 意义是在每个月最后一天的上午 8:00 触发 trigger。在月域上的 * 说明是 "每个月"
  5. L 字母用于周域上,指示着周的最后一天,就是星期六 (或者数字7)。所以如果你需要在每个月的最后一个星期六下午的
  6. 11:59 触发 trigger,你可以用这样的表达式 0 59 23 ? * L
  7. 当使用于周域上,你可以用一个数字与 L 连起来表示月份的最后一个星期 X。例如,表达式 0 0 12 ? * 2L 说的是在每个月
  8. 的最后一个星期一触发 trigger
  9. 不要让范围和列表值与 L 连用
  10. 虽然你能用星期数(1-7)与 L 连用,但是不允许你用一个范围值和列表值与 L 连用。这会产生不可预知的结果。

W 字母

  1. 代表着平日 (Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工
  2. 作周的,所以 W 字符可能是非常重要的。例如,日域中的 15W 意味着 "离该月15号的最近一个平日。" 假如15号是星期
  3. 六,那么 trigger 会在14号(星期五)触发。 假如15号是星期天,那么 trigger 会在16号(星期一)触发。

# 井号

  1. 仅能用于周域中。它用于指定月份中的第几周的哪一天。例如,如果你指定周域的值为 6#3,它意思是某月的第三个周
  2. (6=星期五,#3意味着月份中的第三周)。另一个例子 2#1 意思是某月的第一个星期一 (2=星期一,#1意味着月份中的第
  3. 一周)。注意,假如你指定 #5,然而月份中没有第 5 周,那么该月不会触发。

示例:

  1. 表达式意义
  2. "0 0 12 * *?" 每天中午12点触发
  3. "0 15 10 ? **" 每天上午10:15触发
  4. "0 15 10 * *?" 每天上午10:15触发
  5. "0 15 10 * * ?*" 每天上午10:15触发
  6. "0 15 10 * * ?2005" 2005年的每天上午10:15触发
  7. "0 * 14 * *?" 在每天下午2点到下午2:59期间的每1分钟触发
  8. "0 0/5 14 * *?" 在每天下午2点到下午2:55期间的每5分钟触发
  9. "0 0/5 14,18 ** ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
  10. "0 0-5 14 * *?" 在每天下午2点到下午2:05期间的每1分钟触发
  11. "0 10,44 14 ? 3WED" 每年三月的星期三的下午2:102:44触发
  12. "0 15 10 ? *MON-FRI" 周一至周五的上午10:15触发
  13. "0 15 10 15 *?" 每月15日上午10:15触发
  14. "0 15 10 L *?" 每月最后一日的上午10:15触发
  15. "0 15 10 ? *6L" 每月的最后一个星期五上午10:15触发
  16. "0 15 10 ? * 6L2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
  17. "0 15 10 ? *6#3" 每月的第三个星期五上午10:15触发

cron 表达式的格式 了解的更多相关文章

  1. JAVAEE——BOS物流项目13:Quartz入门案例、核心概念、cron 表达式的格式(了解)

    1.quartz入门案例 本入门案例基于spring和quartz整合完成. 第一步:创建maven工程,导入spring和quartz相关依赖 第二步:创建任务类 第三步:在spring配置文件中配 ...

  2. Spring 调度工具Quartz cron 表达式的格式

    http://chinaxxren.iteye.com/blog/839630 Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别.区别之一就是 Quar ...

  3. Quartz.net Trigger触发器下 Cron表达式的格式

    有位博主写的不错,样式标准好理解,借鉴下. foamflower 1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] ...

  4. QuartZ Cron表达式

     Cron Expressions cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表.        Seconds        Minutes        Hours     ...

  5. Cron表达式简单学习

    CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTrigger,你可以指定触 ...

  6. Quartz Cron 触发器 Cron Expression 的格式

    转自:http://blog.csdn.net/yefengmeander/article/details/5985064 上一文中提到 Cron触发器可以接受一个表达式来指定执行JOB,下面看看这个 ...

  7. Cron表达式说明

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  8. QuartZ Cron表达式在java定时框架中的应用

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronT ...

  9. quartz Cron表达式一分钟教程

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...

随机推荐

  1. virtualbox 安装 extension pack 方法以及出现 "The installer failed with exit code 1: VBoxExtPackHelperApp.exe: error: Failed to rename the temporary directory to the final one"的解决办法

    virtualbox 的版本:5.1.26    下载地址:https://www.virtualbox.org/wiki/Downloads extension pack 的版本:5.1.26   ...

  2. 智能合约开发——以太坊 DApp 实现 购买通证token

    合约的buy()方法用于提供购买股票的接口.注意关键字payable,有了它买股票的人才可以付钱给你. 接收钱没有比这个再简单的了! function buy() payable public ret ...

  3. Delphi使用TObject类对象创建接受window消息(使用Classes.AllocateHWnd为对象创建一个尺寸为0的窗口,从而有了Handle)good

    在delphi中,有时候我们希望对象可以接收windows消息,怎么办呢?因为要接收windows消息起码要有windows Handle,难道要建立的一个可见窗口?那样似乎太差强人意了.delphi ...

  4. qt获得本地IP的方法,qt中域名解析的方法

    本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境:Ubuntu10.04 + Qt4.7.0 Linux获得本地IP的方法,我尝试了两种 1.用QH ...

  5. HTML连载8-video标签

    ​一.video标签 1.作用:播放视频 2.格式:<video src="视频地址“></video> 3.可添加的属性: (1)autoplay="au ...

  6. PHP实现WebService服务

    第一步,安装PHP扩展SOAP并开启扩展,是否开启成功以phpinfo为准. 第二步,创建服务端文件server.php <?php Class server { public function ...

  7. 关于CORS 应该注意的几点

    前言 对于跨域,随着w3c的CORS的出现,相比较于有些年头的jsonp,CORS以其简单安全,支持post的优势越来越收到大家的欢迎.具体如何CORS的原理和实现,直接推荐阮老师的文章,十分详细.本 ...

  8. react 项目全家桶构件流程

    资源:create-react-app.react.react-dom.redux.react-redux.redux-thunk.react-router-dom.antd-mobile/antd. ...

  9. hdoj1009 FatMouse' Trade——贪心算法

    贪心思路:按单位猫粮能兑换到的javaBean从大到小将组合进行排序,总是在当前兑换尽可能多的javabeans 问题描述:点击打开链接 hdoj1009 FatMouse's Trade 源代码: ...

  10. 微信小程序社区爬取

    # CrawlSpider 需要使用:规则提取器 和 解析器 # 1. allow设置规则的方法:要能够限制在目标url上面, 不要跟其他的url产生相同的正则即可 # 2. 什么情况下使用follo ...