Cron表达式是一个字符串,定义时间规则,由6或7个时间域组成,空格分隔。1张表整理清楚含义和规则,并举例经常使用表达式,放手边速查。ide
时间域序号 | 含义 | 取值范围 | 特殊字符 |
---|---|---|---|
1 | 秒Seconds | 0-59 | ,-*/ |
2 | 分钟Minutes | 0-59 | ,-*/ |
3 | 小时Hours | 0-23 | ,-*/ |
4 | 日期DayOfMonth | 1-31 | ,-*/ ? L W C |
5 | 月份Month | 1-12 | ,-*/ JAN-DEC |
6 | 星期DayOfWeek | 1-7 | ,-*/ ? L C # SUN-SAT |
7 | 年Year (可选) | 1970-2099 | ,-*/ |
JAN-DEC 月份英语简称 SUN-SAT 星期英语简称 星期的1表示星期天,2表示星期一,依次类推 * 表示取值范围内的全部数字 / 表示每隔固定时间触发依次,好比0/5表示从0开始每5个单位时间 - 表示两个数字之间的范围,好比3-7表示3到7之间,包含3和7 , 表示离散的枚举数字,好比2,3,5,7表示指定的这几个时间 ? 只能用在日期DayOfMonth和星期DayOfWeek两个域,表示不指定,避免日期和星期的互相影响,好比指定每个月的20日,无论是星期几,正确写法是:0 0 0 20 * ?,其中星期只能用?,若是使用*将触发错误。 L 只能用于日期DayOfMonth和星期DayOfWeek,用于日期时表示月份的最后一天,用于星期时不加数字表示周六,加数字表示最后一个周几,好比0 0 0 ? * 5L表示每个月的最后一个星期四 W 只能用于日期DayOfMonth,表示周一到周五有效工做日,将在离指定日期的最近的有效工做日触发事件。例如在日期使用5W,若是5日是星期六,则将在最近的工做日星期五(4日)触发。若是5日是星期天,则在6日(星期一)触发;若是5日在星期一到星期五中的一天,则就在5日触发。另一点,W的最近工做日寻找不会跨月份。 LW 两个字符连用时表示某个月最后一个工做日 # 只能用于星期DayOfWeek,表示每一个月第几个星期几,好比4#2表示第二个星期三
0/5 * * * * ? 每5秒钟 0 0/5 * * * ? 每5分钟 0 0 6 * * ? 天天早上6点 0 0 9,13,19 * * ? 天天上午9点,下午1点,晚上7点 0 0 23-7/2,8 * * ? 天天晚上11点到早上7点之间的每两个小时,和早上8点 0 0/30 9-17 * * ? 朝九晚五工做时间内每半小时 0 0 9-21 ? * MON-SAT 表示996天天的每小时 0 0 7 LW * ? 每个月最后一个工做日早上7点 0 0 4 1 1 ? 每一年的1月1日早上4点