Cron表达式简介
1、简介
Cron是一个已经存在很长时间的UNIX工具,它的调度功能非常强大且已得到了验证。
Cron表达式用于配置CronTrigger的实例,CronTrigger是org.quartz.Trigger
的一个子类。Cron表达式是由六个或七个子表达式(字段)组成的字符串,用于描述日程(schedule)的各个细节。
2、格式
Cron表达式的字段间用空格分隔,字段可以包含任何允许的值,以及该字段允许的特殊字符的各种组合。字段如下:
字段 | 是否必需 | 允许值 | 允许的特殊字符 |
---|---|---|---|
秒(Seconds) | 是 | 0-59 | , - * / |
分(Minutes) | 是 | 0-59 | , - * / |
时(Hours) | 是 | 0-23 | , - * / |
日(Day of month) | 是 | 1-31 | , - * ? / L W C |
月(Month) | 是 | 0-11 或 JAN-DEC | , - * / |
星期(Day of week) | 是 | 1-7 或 SUN-SAT | , - * ? / L C # |
年(Year) | 否 | 空 或者 1970-2099 | , - * / |
Cron表达式可以是比较简单的,也可以是复杂一点的,例如:
* * * * ? *
0 0/5 14,18,3-39,52 ? JAN,MAR,SEP MON-FRI 2002-2010
3、特殊字符
*
用于选择字段中的所有值;例如,minute字段中的*
表示每一分钟。
?
?
表示没有特殊值;例如:如果希望在每月的10号触发,但不在乎是星期几,那么就可以将day-of-month字段设置为10,而day-of-week字段设置为?
。
-
用于指定范围,例如:hours字段的10-12
表示10、11或12.
,
用于指定附加值,例如:day-of-week字段中的MON,WED,FRI
表示星期一、星期三和星期五。
/
用来指定增量,例如:seconds字段中的0/15
表示0、15、30和45秒;seconds字段中的5/15
表示5、20、35和50秒;day-of-month中的1/3
从每月第一天开始,隔三天触发一次。
-
L
表示最后的(Last),它在不同的字段中的含义不同。例如:
-
day-of-month中的
L
表示每月的最后一天; -
day-of-week字段中的
L
表示每周的最后一天(SAT); -
day-of-week字段中的
6L
表示每月的最后一个星期五; -
month字段中的
L-3
表示每月的倒数第三天到最后一天。
-
-
W
用于指定最接近给定日的工作日(星期一至星期五)。例如:day-of-month字段中的15W
表示距离15号最近的工作日,如果15号是星期六,触发器将在14号星期五触发;如果15号是星期天,触发器将在16号星期一触发;如果15号是星期二,那么就是15号星期二触发。如果距离最近的一天是上个月的某一天,那么会取距离接近的本月的那天。
#
用于指定每月的第n天;例如:day-of-week字段的6#3
表示每月的第三个星期五(day 6 = Friday and #3
= the 3rd one in the month);2#1
gei示每月第一个星期一;4#5
每月第五个星期三;如果当月没指定的那天则不会触发。
4、样例
0 0 12 * * ?
每天中午12:00触发。
0 15 10 ? * *
每天上午10:15触发,等价的写法:0 15 10 * * ?
、0 15 10 * * ? *
等。
0 15 10 * * ? 2021
2021年每天上午10:15触发。
0 * 14 * * ?
每天下午2:00~2:59每分钟触发。
0 0/5 14,18 * * ?
每天下午2:00~2:55和下午6:00~6:55每隔5分钟触发一次。
0 0-5 14 * * ?
每天下午2:00~2:05每分钟触发。
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 L-2 * ?
每月倒数第二天至最后一天上午10:15触发。
0 15 10 ? * 6#3
每月第三个星期五上午10:15触发。
0 0 12 1/5 * ?
从每月的第一天开始,每隔5天中午12:00触发一次。
0 11 11 11 11 ? 2022-2025
2022-2025年每年11月11日上午11:11触发。
5、星期及月份缩写
- 星期
星期 | 英文 | 缩写 |
---|---|---|
星期日 | Sunday | SUN |
星期一 | Monday | MON |
星期二 | Tuesday | TUE |
星期三 | Wednesday | WED |
星期四 | Thursday | THU |
星期五 | Friday | FRI |
星期六 | Saturday | SAT |
- 月份
月份 | 英文 | 缩写 |
---|---|---|
一月 | January | JAN |
二月 | February | FEB |
三月 | March | MAR |
四月 | April | Apr |
五月 | May | MAY |
六月 | June | JUN |
七月 | July | JUL |
八月 | August | AUG |
九月 | Septemper | SEP |
十月 | October | OCT |
十一月 | November | NOV |
十二月 | December | DEC |