Cron表达式及格式适用于各种调度服务quartz xxljob hangfire

精确到分钟数的五部分格式

                    * * * * *
                    - - - - -
                    | | | | |
                    | | | | +----- [周]day of week (0 - 6) (Sunday=0)
                    | | | +------- [月]month (1 - 12)
                    | | +--------- [天]day of month (1 - 31)
                    | +----------- [时]hour (0 - 23)
                    +------------- [分]min (0 - 59)

精确到秒数的六部分格式

                * * * * * *
                - - - - - -
                | | | | | |
                | | | | | +--- [周]day of week (0 - 6) (Sunday=0)
                | | | | +----- [月]month (1 - 12)
                | | | +------- [天]day of month (1 - 31)
                | | +--------- [时]hour (0 - 23)
                | +----------- [分]min (0 - 59)
                +------------- [秒]sec (0 - 59)

特殊字符 意义

                * 表示所有值;例如,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天
                - 表示一个指定的范围;
                , 表示附加一个可能值;
                / 符号前表示开始时间,符号后表示每次递增的值;

Cron 表达式包括以下 7 个字段

  • 格式: [秒] [分] [小时] [日] [月] [周] [年]
  • 序号说明是否必填允许填写的值允许的通配符
    1 0-59 , - * /
    2 0-59 , - * /
    3 小时 0-23 , - * /
    4 0-31 , - * ? / L W
    5 1-12 or JAN-DEC , - * /
    6 1-7 or SUN-SAT , - * ? / L #
    7 empty 或者 1970-2099 , - * /

通配符说明

  1. 反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
  2. 星号(*)字符是通配字符,表示该字段可以接受任何可能的值(例如:在分的字段上设置 \"*\",表示每一分钟都会触发)。
  3. 问号(?)问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在月内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
  4. - 表示区间,例如 在小时上设置 \"10-12\",表示 10,11,12点都会触发。
  5. 逗号(, ) 表示指定多个值,例如在周字段上设置 \"MON,WED,FRI\" 表示周一,周三和周五触发
  6. 井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
  7. L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于\"7\"或\"SAT\"。如果在\"L\"前加上数字,则表示该数据的最后一个。例如在周字段上设置\"6L\"这样的格式,则表示“本月最后一个星期五\"。
  8. W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置\"15W\",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 \"1W\",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,\"W\"前只能设置具体的数字,不允许区间\"-\。

注:'L'和 'W'可以一组合使用。如果在日字段上设置\"LW\",则表示在本月的最后一个工作日触发。

每分: (* * * * *)
每时: (0 * * * *)
每天: (0 0 * * *)
每周: (0 0 * * 1)
每月: (0 0 1 * *)
每年: (0 0 1 1 *)


Commonly used Example
0 10 * * * ?--------------------每个小时过10分执行一次
0 0/32 8,12 * * ? --------------每天8:32,12:32 执行一次
0 0/2 * * * ?-------------------每2分钟执行一次
0 0 12 * * ?--------------------在每天中午12:00触发
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:00至2:59之间每分钟触发一次
0 0/5 14 * * ?------------------每天在下午2:00至2:59之间每5分钟触发一次
0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次
0 0-5 14 * * ?------------------每天在下午2:00至2:05之间每分钟触发一次
0 10,44 14 ? 3 WED--------------每三月份的星期三在下午2:00和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 ? * 6L------------------在每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6L 2002-2005--------在2002, 2003, 2004 and 2005年的每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6#3-----------------在每个月的第三个星期五的上午10:15触发
0 0 12 1/5 * ?------------------从每月的第一天起每过5天的中午12:00时触发
0 11 11 11 11 ?-----------------在每个11月11日的上午11:11时触发.


在每个11月11日的上午11:11时触发.:0 0 0 * * ?
每周一0点:0 0 0 ? * MON 或者 0 0 0 ? * 2 (注:1=SUN,2=MON,3=TUE,4=WED,5=THU,6=FRI,7=SAT)
每月1日0点: 0 0 0 1 * ?
每年1月1日0点:0 0 0 1 1 ?或者 0 0 0 1 JAN ?(注:1-12月依次是JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC)
2046年8月1日0点:0 0 0 1 8 ? 2046
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
每隔5分钟执行一次:0 0/5 * * * ?
0 0 12 * * ? 在每天中午12:00触发
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:00至2:59之间每分钟触发一次
0 0/5 14 * * ? 每天在下午2:00至2:59之间每5分钟触发一次
0 0/5 14,18 * * ? 每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次
0 0-5 14 * * ? 每天在下午2:00至2:05之间每分钟触发一次
0 10,44 14 ? 3 WED 每三月份的星期三在下午2:00和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 ? * 6L 在每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6L 2002-2005 在2002, 2003, 2004 and 2005年的每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6#3 在每个月的第三个星期五的上午10:15触发
 
posted @ 2023-01-06 11:09  microsoft_xin  阅读(181)  评论(0编辑  收藏  举报