一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下:
字段名  允许的值  允许的特殊字符 
秒  0-59  , - * / 
分  0-59  , - * / 
小时  0-23  , - * / 
日  1-31  , - * ? / L W C 
月  1-12 or JAN-DEC  , - * / 
周几  1-7 or SUN-SAT  , - * ? / L C # 
年 (可选字段)  empty, 1970-2099  , - * /

'*' 字符可以用于所有字段,在“分”字段中设为"*"表示"每一分钟"的含义。

'?' 字符可以用在“日”和“周几”字段. 它用来指定 '不明确的值'. 这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。

'-' 字符被用来指定一个值的范围,比如在“小时”字段中设为"10-12"表示"10点到12点".

',' 字符指定数个值。比如在“周几”字段中设为"MON,WED,FRI"表示"the days Monday, Wednesday, and Friday".

'/' 字符用来指定一个值的的增加幅度. 比如在“秒”字段中设置为"0/15"表示"第0, 15, 30, 和 45秒"。而 "5/15"则表示"第5, 20, 35, 和 50". 在'/'前加"*"字符相当于指定从0秒开始. 每个字段都有一系列可以开始或结束的数值。对于“秒”和“分”字段来说,其数值范围为0到59,对于“小时”字段来说其为0到23, 对于“日”字段来说为0到31, 而对于“月”字段来说为1到12。"/"字段仅仅只是帮助你在允许的数值范围内从开始"第n"的值。 因此 对于“月”字段来说"7/6"只是表示7月被开启而不是“每六个月”, 请注意其中微妙的差别。

'L'字符可用在“日”和“周几”这两个字段。它是"last"的缩写, 但是在这两个字段中有不同的含义。例如,“日”字段中的"L"表示"一个月中的最后一天" —— 对于一月就是31号对于二月来说就是28号(非闰年)。而在“周几”字段中, 它简单的表示"7" or "SAT",但是如果在“周几”字段中使用时跟在某个数字之后, 它表示"该月最后一个星期×" —— 比如"6L"表示"该月最后一个周五"。当使用'L'选项时,指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。

'W' 可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五) 。比如你将“日”字段设为"15W",意为: "离该月15号最近的工作日"。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日, 触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将“日”字段设为"1W", 而一号又是周六, 触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。'W'字符只能用于“日”字段的值为单独的一天而不是一系列值的时候。

'L'和'W'可以组合用于“日”字段表示为'LW',意为"该月最后一个工作日"。

'#' 字符可用于“周几”字段。该字符表示“该月第几个周×”,比如"6#3"表示该月第三个周五( 6表示周五而"#3"该月第三个)。再比如: "2#1" = 表示该月第一个周一而 "4#5" = 该月第五个周三。注意如果你指定"#5"该月没有第五个“周×”,该月是不会触发的。

'C' 字符可用于“日”和“周几”字段,它是"calendar"的缩写。 它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历, 那它等同于包含全部日历。“日”字段值为"5C"表示"日历中的第一天或者5号以后",“周几”字段值为"1C"则表示"日历中的第一天或者周日以后"。

对于“月份”字段和“周几”字段来说合法的字符都不是大小写敏感的。

下面是一些完整的例子: 
表达式  含义 
"0 0 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 * * ?"  每天从下午2点开始到2点59分每分钟一次触发 
"0 0/5 14 * * ?"  每天从下午2点开始到2:55分结束每5分钟一次触发 
"0 0/5 14,18 * * ?"  每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 
"0 0-5 14 * * ?"  每天14:00至14:05每分钟一次触发 
"0 10,44 14 ? 3 WED"  三月的每周三的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 ? * 6L"  每月最后一个周五的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触发

转载于:https://blog.51cto.com/tcloud/1591352

Spring定时器表达式相关推荐

  1. spring 定时器 表达式 org.springframework.scheduling.quartz.CronTriggerBean

    一个Quartz的CronTrigger表达式分为七项子表达式,任何一个表达式最少需要六项: 其中每一项以空格隔开,从左到右分别是:秒,分,时,月的某天,月,星期的某天,年:其中年不是必须的 例:0 ...

  2. Spring定时器corn表达式详解

    1.结构 Spring定时器corn表达式详解 2.各字段的含义 字段 允许值 允许的特殊字符 秒 0~59 - * / 分 0~59 - * / 小时 0~23 - * / 日期 1~31 - * ...

  3. Spring定时器Cron表达式跨小时处理

    平时使用Spring定时器还是蛮频繁的,一般都是秒级,分钟级 比如说每十秒一次触发 @Scheduled(cron = "0/10 * * * * ?") 运行结果 每二十分钟一次 ...

  4. Spring定时器的使用-多实例下定时重建索引

    2019独角兽企业重金招聘Python工程师标准>>> 前几天接到项目需要定时重建索引的任务,一开始试了试Java自带的Timer,不知道是不是自己对Timer的了解还不够的原因,感 ...

  5. Spring 定时器

    本文向您介绍Spring定时器的两种实现方式,包括Java Timer定时和Quartz定时器,两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用. 有两种流行Spring定时器配置 ...

  6. spring定时器(@Scheduled)

    spring定时器需要额外添加下面配置 一.配置文件 xmlns 额外添加下面的内容: xmlns:task="http://www.springframework.org/schema/t ...

  7. [spring-framework]Spring定时器的配置和使用

    开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了m ...

  8. spring定时器,定时器一次执行两次的问题

    Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task"http ...

  9. java统计 pv uv_统计网址的pv,uv(附带Spring定时器)

    之前做了一个统计商铺的PV,UV值 大体思路:每天将用户的访问信息放到明细表里,然后在第二天的凌晨将这些数据归总 PVUV表 4个字段:主键pk    用户IP(customer_ip)    访问时 ...

最新文章

  1. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
  2. 压力变动力,存储追求高效率
  3. IBM Thinkpad T43-44U 升级到 2G 内存后少了 66M
  4. 网络安全性——IPSEC(续思科设备实现)
  5. 9.找出1000以内的完数,所谓完数是指该数的各因子之和等于该数,如:6 = 1+2+3。
  6. 福建信息技术学院计算机系男生宿舍怎么样,广西职业技术学院宿舍怎么样
  7. Python是Python的web框架
  8. ajax全局加密,Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)...
  9. 在ASP.Net中实现RSA加密
  10. 【调参】Cyclic Learning Rates和One Cycle Policy-Keras
  11. ajax post form表单提交中文乱码,ajax XMLHTTP Post Form时的表单乱码综合解决
  12. hist函数--matplotlib
  13. 骑士问题-BFS求解
  14. 卡通头像生成器Avataaars generator
  15. 内存XMP是什么意思
  16. C++使用winhttp以POST/GET方法实现报文转发与接收
  17. LeetCode 167.Two Sum II 解题报告
  18. java期末心得,java期末小结
  19. JS将对象数组按指定顺序排列
  20. [转]ColdFusion简介

热门文章

  1. 条款20 :宁以pass-by-reference-to-const 替换pass-by-value
  2. JQuery.Ajax 错误调试帮助信息
  3. 关于Redis的数据迁移(三种方法)
  4. 什么叫做多媒体计算机技术,多媒体计算机系统是什么
  5. oracle0级备份和全备份实录_蓝光硬盘备份管理系统在档案系统的应用
  6. visual studio 64位汇编 listing列表文件
  7. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 抽象业务逻辑函数 )
  8. 【C 语言】字符串操作 ( strlen 与 sizeof 函数 | 计算 字符串长度 与 内存块大小 )
  9. 【错误记录】Android 低版本使用分区存储错误 ( 低版本存储不得使用 MediaStore )
  10. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )