* * * * * * *
秒 分 小时 一月 月份 星期 年
哪天
所有星号对应的段位置,都可以出现后面的符号(, - * /)
(? / L C)这些符号可以出现在"一月哪天"和"星期"段位置
(w)只能出现在"一月哪天"段位置
(#)只能出现在"星期"段位置
解释符号代表的意思:
* 代表任意合法的字段
0 * 17 * * ? :表示在每天的5 PM 到 5:59之间的每一分钟启动scheduler
? 表示没值被指定
如果同时指定"一月哪天"和"星期",可能两者对应不起来
0 0,15,30,45 * * * ? :表示每刻钟启动scheduler
所以推荐用法是其中一个指定值,另一个用?指定
/ 表示时间的增量
0 0/15 * * * ? :表示每刻钟启动scheduler
- 表示值的范围
0 45 3-8 ? * *
L 如果用在"一月哪天"段上,表示一个月的最后一天;如果用在"星期"段上。表示一个星期的最后一天(星期六)
0 0 8 L * ? :表示每个月最后一天的8点启动scheduler
W 表示最靠近给定时间的一天,(必须是星期一到星期五)
# 例如 6#3表示一个月的第三个星期五
表达式用" "分隔为7个部分,每部分含义如下
Field Name | Mandatory? | Allowed Values | Allowed Special Characters |
---|---|---|---|
Seconds | YES | 0-59 | , - * / |
Minutes | YES | 0-59 | , - * / |
Hours | YES | 0-23 | , - * / |
Day of month | YES | 1-31 | , - * ? / L W C |
Month | YES | 1-12 or JAN-DEC | , - * / |
Day of week | YES | 1-7 or SUN-SAT | , - * ? / L C # |
Year | NO | empty, 1970-2099 | , - * / |
补充说明:
'*'代表 '任何值'
'?'也代表 '任何值', 但只用于 Day-of-month 和 Day-of-Week, 当其中一个设置了条件时,另外一个就要用'?' 来表示 '任何值'
'-'用来表示范围, 比如 Day-of-month 5-10 代表 5号到10号
','用来添加附加的参数,比如 Hours 4,14 代表 上午4点和下午两点
'/'用来代表增量以用来循环,比如 Hours 2/6 代表 2点,8点,下午2点,下午8点
'L'用于 Day-of-month 和 Day-of-Week, 代表最后1天, 在Day-of-month中只用'L'就可以,在Day-of-week中用 'nL' 来代表是最后一个星期n
'W'用于 Day-of-month, 代表最近工作日,比如 '15W', 如果15号那天是周六则取14号周五,如果是周日则取16号周一,其他情况不变
'LW' 代表当月最后一个工作日
'#'用于 Day-of-Week, 'n#m'用于代表当月第m个 "周n"(根据n在week中的定义确定)
'C'似乎目前还没实现完全,暂不解释(自己也还不是很清楚,先看文档吧)
所有星号对应的段位置,都可以出现后面的符号(, - * /)
(? / L C)这些符号可以出现在"一月哪天"和"星期"段位置
(w)只能出现在"一月哪天"段位置
(#)只能出现在"星期"段位置
解释符号代表的意思:
* 代表任意合法的字段
0 * 17 * * ? :表示在每天的5 PM 到 5:59之间的每一分钟启动scheduler
? 表示没值被指定
如果同时指定"一月哪天"和"星期",可能两者对应不起来
0 0,15,30,45 * * * ? :表示每刻钟启动scheduler
所以推荐用法是其中一个指定值,另一个用?指定
/ 表示时间的增量
0 0/15 * * * ? :表示每刻钟启动scheduler
- 表示值的范围
0 45 3-8 ? * *
L 如果用在"一月哪天"段上,表示一个月的最后一天;如果用在"星期"段上。表示一个星期的最后一天(星期六)
0 0 8 L * ? :表示每个月最后一天的8点启动scheduler
W 表示最靠近给定时间的一天,(必须是星期一到星期五)
# 例如 6#3表示一个月的第三个星期五