文档章节

cronExpression时间介绍

pake35110
 pake35110
发布于 2016/05/25 09:27
字数 1404
阅读 6
收藏 1

关于cronExpression的介绍

2008-03-27 18:58

一个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触发

 

 

© 著作权归作者所有

pake35110
粉丝 4
博文 215
码字总数 161088
作品 0
杭州
程序员
私信 提问
Spring quartz定时器动态多任务实现

项目中经常会碰到需要定时执行的任务,并且需要执行什么任务,以及任务执行的时间都由用户自定义的需求。quartz是比较常用的定时器工具,并且在spring框架中也已经做了很好的集成,所以在以s...

凯文加内特
2015/06/27
2.7K
0
Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)

什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许...

随影求是
2012/05/03
497
0
Spring集成Quartz实现定时器

利用Spring集成Quartz可以轻松实现一个定时器,其中Quartz的配置applicationContext-quartz.xml如下: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.o......

juninan
2013/12/25
1K
0
spring定时器----CronTriggerBean

层次结构 2. CronTriggerBean.java public class CronTriggerBean extends CronTrigger Register objects in the JobDataMap via a given Map. Set the misfire instruction via the name of......

绿林小子
2015/11/25
86
0
monkeyk7/spring-dynamic-job

#spring-dynamic-job 项目用Maven管理 使用的技术与版本号 Java (1.7) Spring (3.2.2.RELEASE) Quartz (2.2.3) mysql-connector-java (5.1.35) 使用说明 Check-out代码, 使用IDE(如IDEA) 打开......

monkeyk7
2016/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
357
7
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
11
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部