cron表达式格式为7个域, 如:
秒 分 时 日 月 周 年
每一个域之间空格隔开, 不指定"年"域时, 年域可省略不写, 如:
秒 分 时 日 月 周
字段名 允许的值 允许的特殊字符
秒 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 , - * /
***注意***: 在"周"域中, 使用数值表示时, 7表示周六, 1表示周日
所有域可使用: "," "-" "*" "/"
, 表示x和y
- 表示x到y
* 表示每time
/ 表示从x起, 没隔y
"日"域另有"?" "L" "W" "C"
? 表示不指定"日"域的值。规则是指定"周"域, 则"日"域必须为"?"。反之, 指定"日"域, 则"周"域必须为"?"。
如: 0 0 12 ? * MON 或 0 0 12 1 * ?
L 2种写法:
一, 表示月末几天, 如2L, 表示月末的2天
二, 表示月末倒数第几天, 如L-3, 表示月末倒数第3天
W 表示临近某日的工作日, 如15W, 表示最接近15号的工作日, 可能是15号(刚好是工作日)、15号前(刚好周六)
或 15号后(刚好周日)
C 表示和Calendar(日历)计划关联的值, 如1C表示, 1日或1日后包括的Calendar(日历)的第一天
LW L和W的组合, 只能出现在"日"域中, 表示某日最后一个工作日, 不一定是周五(详情见结尾ps)
"周"域另有"?" "L" "#" "C"
? 表示不指定"周"域。规则是知道"日"域值, 则"周"域值必须为"?"。反之, 则"日"域中必须为"?"。
如: 0 0 12 1 * ? 或 0 0 12 ? * MON
L 表示某月的最后一个周几, 如1L, 表示某月的最后一个周日(1表示周日), 7L, 表示某月的最后一个周六(7表
示周六)
# 只能出现在"周"域中, 表示第几个周几, x#y, y表示第几个, x表示周的值,
如6#2, 表示第二个周五(6表示周五)
C 表示和Calendar(日历)计划关联的值, 如1C表示, 周日或周日后包括的Calendar(日历)的第一天
***注意***
"日"域中, L和W组合时为"LW"时, 网上有很多种定义, 如:
说法1: LW表示某月最后一个工作日
说法2: LW表示某月最后一周的最后一个工作日, 即周五
1.Seconds 秒: (0~59)
2.Minutes 分: (0~59)
3.Hours 时: (0~23)
4.Day-of-Month天: (1~31,但是要注意有些月份没有31天)
5.Month 月: (0~11,或者"JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV,DEC")
6.Day-of-Week周: (1~7,1=SUN 或者"SUN, MON, TUE, WED, THU, FRI, SAT”)
7.Year年: (1970~2099)