一、Cron表达式是一个由 7个子表达式组成的字符串。每个子表达式都描述了一个单独的日程细节。这些子表达式用空格分隔,分别表示:
字段 允许值 允许的特殊字符
1. Seconds 秒 0-59 , - * /
2. Minutes 分钟 0-59 , - * /
3. Hours 小时 0-23 , - * /
4. Day-of-Month 月中的天 1-31 , - * / ? L W
5. Month 月 1-12(或JAN-DEC) , - * /
6. Day-of-Week 周中的天 1-7(或SUN-SAT) , - * / ? L #
7. Year 年(可选的字段) 忽略(或1970-2099) , - * /
SUN-SAT(周中天) :1-7(1 = 星期日) 和 SUN, MON, TUE, WED, THU, FRI, SAT
JAN-DEC(月) :1-12 和 JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
格式:Seconds Minutes Hours Day-of-Month Month Day-of-Week Year
二、特殊字符含义
“*”:表示当前字段的任意值。
“-”:指定一个值的范围。
“,”:指定数个值。
“/”:表示为“每”。在 Minutes 字段中,“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始,“3/20”表示每隔20分钟执行一次,“3”表示从第3分钟开始执行。
“?”:只能用于 Day-of-Month 和 Day-of-Week 字段,当这两个字段其中之一被指定了值以后,为了避免冲突,需要将另一个字段的值设为“?”。
“L”:只能用于 Day-of-Month 和 Day-of-Week 字段,表示一个月的最后一天,或一个月的最后一个星期几。在 Day-of-Week 字段中,“6L”表示“一月的最后一个星期五”。
“W”:只能用于 Day-of-Month 字段,表示为最近的工作日,“15W”表示为“到本月15日最近的工作日”。
“#”:只能用于 Day-of-Week 字段,表示每月的第几个星期几,"6#3" or "FRI#3" 表示“每月的第三个星期五”。
三、附录
"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触发