• Cron表达式


    本文翻译自:

    http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html

     

    1.简介

        Cron作为一个Unix工具,已经存在很长一段时间了,用于实现任务调度的功能。CronTrigger类基于Cron而来。

        CronTrigger使用Cron表达式创建任务调度,比方说“每周一到周五的8:00”或者“每个月最后一个周五的下午1:30”。

    2.格式

    Field Name Mandatory Allowed Values Allowed Special Characters
    Seconds yes 0-59 ,_*/
    Minutes yes 0-59 ,_*/
    Hours yes 0-23 ,_*/
    Day Of month yes 1-31 ,_*?/LW
    Month yes 1-12 or JAX-DEC ,_*/
    Day of Week yes 1-7 or SUN-SAT ,_*?/L#
    Year no empty,1970-2099 ,_*/

     

     

     

    简单的Cron表达式可以简单到:* * * * ? *

    复杂的表达式可以如: 0/5 14,18,3-39,52 * ? HAX,MAR,SEP MON-FRI 2002-2010

    3.特殊字符

    • *   (所有值):用于选择该字段的所有可选值,如果在Minuate位则表示每分钟
    • (非指定的值):当在某些字段需要指定一些值而其他字段不指定时使用。比方说想在一个月的第10天触发,而不关心这天是一周的第几天,则可以在第4位写10而第6位放“?”。
    • -    :用于定义范围:第三位写“10-12”指10点、11点、12点。
    • ,    :用于指定其他值。比方说,“MON,WED,FRI”在第6位,表示每周一、周三、周五
    • /    :用于指定增量。比方说在第1位写"0/15”表示第0、15、30和45秒,而“5/15”表示第2、20、35和50秒。
    • L  (last):在不同的字段含义不同,在第4位表示每月的最后一天,单字符在第6位表示“7”或者"SAT"。如果在其他字符后,比方说“6L”在第6位表示“当月的最后一个周五”。也可以指定偏移量,比方说“L-3”表示倒数第3天。
    • W(周):用于指定给定日期最近的工作日。比方说,在第4位指定“15W”表示“月份中的的第15天最近的工作日”,如果第15天是周日则会在16号触发,如果是周六则在14号触发,如果是工作日则在当天触发。但是需要注意的是,如果设置的是“1W”而第1号是周六,那将在3号触发,即触发是不能跨月的。'W'字符只能用于 ‘day-of-month’是单个一天时,而不能是连续的日期。 'L'和'W'字符经常组合在一起使用‘LW’,表示‘这个月的最后一个工作日’。
    • #:用于指定月份中的第几天。比方说,‘6#3’在‘day-of-week’表示这个月的第三个周五(国外周日是第一天)。

    4.示例

    表达式 含义
    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 * * ? 每天的14:00到14:59的每个整分钟触发
    0 0/5 14 * * ? 每天的14:00到14:55中每5分钟触发一次
    0 0/5 14,18 * * ? 每天的14:00到14:55中每5分钟触发一次,18:00到18:55中每5分钟触发一次
    0 0-5 14 * * ? 每天的14:00到14:05中每分钟触发一次
    0 10,44 14 ? 3 WED 3月份的每个周三,在下午的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 L-2 * ? 每个月的倒数第三天的10:15触发
    0 15 10 ? * 6L 每个月的最后一个周五的10:15触发
    0 15 10 ? * 6L 2002-2005 在2002、2003、2004、2005年的每个月的最后一个周五的上午10:15触发
    0 15 10 ? * 6#3 每个月的第3个周五的上午10:15触发
    0 0 12 1/5 * ? 在每个月的第一天开始,每隔5天的中午12点触发
    0 11 11 11 11 ? 每年的11月11号的上午11:11触发
       

     

    5.备注

     

     

  • 相关阅读:
    dedecms图片列表效果调用
    ThinkPHP 中M方法和D方法的具体区别
    在线更新dede程序后 网站出现错误 DedeCMS Error:Tag disabled:"php" more...!
    Form元素示例
    PHP使用frameset制作后台界面时,怎样实现通过操作左边框架,使右边框架中的页面跳转?
    删除UTF-8 BOM头的GUI小工具
    解决 ultraedit 菜单字体模糊
    git使用及一些配置、问题
    shell之基本语法
    shell之iptables
  • 原文地址:https://www.cnblogs.com/imstrive/p/9985120.html
Copyright © 2020-2023  润新知