Quartz是定时调度任务的一个类库。cron表达式是它用来制定定时计划的一种功能强大而又简单的表达式。
一个
cron
表达式有至少
6
个(也可能
7
个)有空格分隔的时间元素。
按顺序依次为
秒(
0~59
)
分钟(
0~59
)
小时(
0~23
)
天(月)(
0~31
,但是你需要考虑你月的天数)
月(
0~11
)
天(星期)(
1~7 1=SUN
或
SUN
,
MON
,
TUE
,
WED
,
THU
,
FRI
,
SAT
)
7.
年份(
1970
-
2099
)
其中每个元素可以是一个值 ( 如 6), 一个连续区间 (9-12), 一个间隔时间 (8-18/4)(/ 表示每隔 4 小时 ), 一个列表 (1,3,5), 通配符。由于 " 月份中的日期 " 和 " 星期中的日期 " 这两个元素互斥的 , 必须要对其中一个设置 ?.
其中每个元素可以是一个值 ( 如 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 点
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”
参数时,不要指定列表或范围,因为这会导致问题