`
ahaoo0712
  • 浏览: 17149 次
  • 性别: Icon_minigender_1
  • 来自: 襄樊
社区版块
存档分类
最新评论

Spring定时器设置详解释

阅读更多

Spring 定时器设置详解释

org.springframework.scheduling.quartz.CronTriggerBean 允许你更精确地控制任务的运行时间,只需要设置其 cronExpression 属性

一个 cronExpression 表达式有至少6 个(也可能是7 个)由空格分隔的时间元素。从左至右,这些元素的定义如下:

1 .秒(059

2 .分钟(059

3 .小时(023

4 .月份中的日期(131

5 .月份(112JANDEC

6 .星期中的日期(17SUNSAT

7 .年份(19702099

0 0 10,14,16 * * ?

每天上午10, 下午2 点和下午4

0 0,15,30,45 * 1-10 * ?

每月前10 天每隔15 分钟

30 0 0 1 1 ? 2012

201211 日午夜过30 秒时

0 0 8-5 ? * MON-FRI

每个工作日的工作时间

各个时间可用值如下:

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" 的值。

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics