Cron表达式生成验证

在线配置Quartz Cron表达式

Cron表达式:

Seconds Minutes Hours Day Of Month Month Day Of Week Year
 

QuartzCron 表达式使用说明

按顺序依次为

秒(0~59)

分钟(0~59)

小时(0~23)

天(月)(0~31,但是你需要考虑你月的天数)

月(0~11)

天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

年份(1970-2099)

 

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时

0 0 12 ? * WED 表示每个星期三中午12点

有些子表达式能包含一些范围或列表

例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

“*”字符代表所有可能的值

因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天

 

“/”字符用来指定数值的增量

例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟

         在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样

 

“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值

当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

 

“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写

但是它在两个子表达式里的含义是不同的。

在天(月)子表达式中,“L”表示一个月的最后一天

在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

如果在“L”前有具体的内容,它就具有其他的含义了

例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五

注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

 

 

 

附:cronExpression配置说明

 

字段 允许值 允许的特殊字符

秒 0-59 , - * /

分 0-59 , - * /

小时 0-23 , - * /

日期 1-31 , - * ? / L W C

月份 1-12 或者 JAN-DEC , - * /

星期 1-7 或者 SUN-SAT , - * ? / L C #

年(可选) 留空, 1970-2099 , - * /

表达式 意义

"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 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发

"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发

"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发

"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和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年至2005年的每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 \

5 5 9 ? * SAT 每周6的9点5分5秒触发一次

 

 

特殊字符 意义

* 表示所有值;

? 表示未说明的值,即不关心它为何值;

- 表示一个指定的范围;

, 表示附加一个可能值;

/ 符号前表示开始时间,符号后表示每次递增的值;

L("last") ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";用在 day-of-week字段, 它简单意思是 "7" or "SAT"。 如果在day-of-week字段里和数字联合使用,它的意思就是 "这个月的最后一个星期几" – 例如: "6L" means "这个月的最后一个星期五". 当我们用“L”时,不指明一个列表值或者范围是很重要的,不然的话,我们会得到一些意想不到的结果。

W("weekday") 只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在day-of-month字段用“15W”指“最接近这个 月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第 16天即周一触发;如果这个月第15天是周二,那么就在触发器这天触发。注意一点:这个用法只会在当前月计算值,不会越过当前月。“W”字符仅能在 day-of-month指明一天,不能是一个范围或列表。也可以用“LW”来指定这个月的最后一个工作日。

# 只能用在day-of-week字段。用来指定这个月的第几个周几。例:在day-of-week字段用"6#3"指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。

C 指和calendar联系后计算过的值。例:在day-of-month 字段用“5C”指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用“1C”指在这周日或之后包括calendar的第一天。 

 

 

格式: [秒] [分] [小时] [日] [月] [周] [年]

 序号

说明 

 是否必填

 允许填写的值

允许的通配符 

 1

 秒

 是

 0-59 

  , - * /

 2

 分

 是

 0-59 

  , - * /

 3

小时

 是

 0-23

  , - * /

 4

 日

 是

 1-31

  , - * ? / L W

 5

 月

 是

 1-12 or JAN-DEC

  , - * /

 6

 周

 是

 1-7 or SUN-SAT

  , - * ? / L #

 7

 年

 否

 empty 或1970-2099

 , - * /

 

通配符说明:

* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。

? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?

- 表示区间。例如在小时上设置 "10-12",表示 10,11,12点都会触发。

, 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发

/ 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。

L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本月最后一个星期五" 

W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 "1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体的数字,不允许区间"-").

小提示

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

#序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了)

小提示

周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.

 

常用示例:

  

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 * * ?

每天下午的 2点到2点59分每分触发

0 0/5 14 * * ?

每天下午的 2点到2点59分(整点开始,每隔5分触发)

0 0/5 14,18 * * ?

每天下午的 2点到2点59分(整点开始,每隔5分触发)

每天下午的 18点到18点59分(整点开始,每隔5分触发)

0 0-5 14 * * ?

每天下午的 2点到2点05分每分触发

0 10,44 14 ? 3 WED

3月分每周三下午的 2点10分和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年到2005年每月最后一周的星期五的10点15分触发

0 15 10 ? * 6#3

每月的第三周的星期五开始触发

0 0 12 1/5 * ?

每月的第一个中午开始每隔5天触发一次

0 11 11 11 11 ?

每年的11月11号 11点11分触发(光棍节)

Cron expression examples

Expression Meaning
* * * ? * * Every second
0 * * ? * * Every minute
0 */2 * ? * * Every even minute
0 1/2 * ? * * Every uneven minute
0 */2 * ? * * Every 2 minutes
0 */3 * ? * * Every 3 minutes
0 */4 * ? * * Every 4 minutes
0 */5 * ? * * Every 5 minutes
0 */10 * ? * * Every 10 minutes
0 */15 * ? * * Every 15 minutes
0 */30 * ? * * Every 30 minutes
0 15,30,45 * ? * * Every hour at minutes 15, 30 and 45
0 0 * ? * * Every hour
0 0 */2 ? * * Every hour
0 0 0/2 ? * * Every even hour
0 0 1/2 ? * * Every uneven hour
0 0 */3 ? * * Every three hours
0 0 */4 ? * * Every four hours
0 0 */6 ? * * Every six hours
0 0 */8 ? * * Every eight hours
0 0 */12 ? * * Every twelve hours
0 0 0 * * ? Every day at midnight - 12am
0 0 1 * * ? Every day at 1am
0 0 6 * * ? Every day at 6am
0 0 12 * * ? Every day at noon - 12pm
0 0 12 * * ? Every day at noon - 12pm
0 0 12 ? * SUN Every Sunday at noon
0 0 12 ? * MON Every Monday at noon
0 0 12 ? * TUE Every Tuesday at noon
0 0 12 ? * WED Every Wednesday at noon
0 0 12 ? * THU Every Thursday at noon
0 0 12 ? * FRI Every Friday at noon
0 0 12 ? * SAT Every Saturday at noon
0 0 12 ? * MON-FRI Every Weekday at noon
0 0 12 ? * SUN,SAT Every Saturday and Sunday at noon
0 0 12 */7 * ? Every 7 days at noon
0 0 12 1 * ? Every month on the 1st, at noon
0 0 12 2 * ? Every month on the 2nd, at noon
0 0 12 15 * ? Every month on the 15th, at noon
0 0 12 1/2 * ? Every 2 days starting on the 1st of the month, at noon
0 0 12 1/4 * ? Every 4 days staring on the 1st of the month, at noon
0 0 12 L * ? Every month on the last day of the month, at noon
0 0 12 L-2 * ? Every month on the second to last day of the month, at noon
0 0 12 LW * ? Every month on the last weekday, at noon
0 0 12 1L * ? Every month on the last Sunday, at noon
0 0 12 2L * ? Every month on the last Monday, at noon
0 0 12 6L * ? Every month on the last Friday, at noon
0 0 12 1W * ? Every month on the nearest Weekday to the 1st of the month, at noon
0 0 12 15W * ? Every month on the nearest Weekday to the 15th of the month, at noon
0 0 12 ? * 2#1 Every month on the first Monday of the Month, at noon
0 0 12 ? * 6#1 Every month on the first Friday of the Month, at noon
0 0 12 ? * 2#2 Every month on the second Monday of the Month, at noon
0 0 12 ? * 5#3 Every month on the third Thursday of the Month, at noon - 12pm
0 0 12 ? JAN * Every day at noon in January only
0 0 12 ? JUN * Every day at noon in June only
0 0 12 ? JAN,JUN * Every day at noon in January and June
0 0 12 ? DEC * Every day at noon in December only
0 0 12 ? JAN,FEB,MAR,APR * Every day at noon in January, February, March and April
0 0 12 ? 9-12 * Every day at noon between September and December