Cron表达式是一个字符串,结构非常简单。Cron表达式从左到右分为6或7个字段,每个字段代表一个含义,用空格隔开。如下图所示
注:/与5算是一个整体
注:第6位星期(DayofWeek)的取值范围为1~7,从星期日(SUN)开始。
【 * 】:每的意思。在不同的字段上,就代表每秒,每分,每小时等。
【 - 】:指定值的范围。比如[1-10],在秒字段里就是每分钟的第1到10秒,在分就是每小时的第1到10分钟,以此类推。
【 , 】:指定某几个值。比如[2,4,5],在秒字段里就是每分钟的第2,第4,第5秒,以此类推。
【 / 】:指定值的起始和增加幅度。比如[3/5],在秒字段就是每分钟的第3秒开始,每隔5秒生效一次,也就是第3秒、8秒、13秒,以此类推。
【 ? 】:仅用于【日】和【周】字段。因为在指定某日和周几的时候,这两个值实际上是冲突的,所以需要用【 ? 】标识不生效的字段。比如【0 1 * * * ?】就代表每年每月每日每小时的1分0秒触发任务。这里的周就没有效果了。
【 L 】 :用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”
【 W 】: 表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”
【 # 】:表示本月中的第几个周几,如DayofWeek字段中的“6#3”或者“FRI#3”表示“本月中第三个周五”。
注:从左至右 秒 分 时 日 月 星期几 年
(1) 0 0 2 1 * ? * 表示在每月的1日的凌晨2点触发
(2) 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15触发
(3) 0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15触发
(4) 0 0 10,14,16 * * ? 表示每天上午10点,下午2点,4点触发
(5) 0 0/30 9-17 * * ? 9点-17点每半小时触发
(6) 0 0 12 ? * WED 表示每个星期三中午12点触发
(7) 0 0 12 * * ? 每天中午12点触发
(8) 0 15 10 ? * * = 0 15 10 * * ? = 0 15 10 * * ? * 每天上午10:15触发
(9) 0 15 10 * * ? 2005 2005年的每天上午10:15触发
(10) 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
(11) 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
(12) 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(13) 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
(14) 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
(15) 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
(16) 0 15 10 15 * ? 每月15日上午10:15触发
(17) 0 15 10 L * ? 每月最后一日的上午10:15触发 (L表示最后一天)
(18) 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 (6是星期五 从礼拜天开始算)
(19) 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
(20)0 */1 * * * ? 每隔1分钟执行一次
(21)0 0 5-15 * * ? 每天5-15点整点触发
(22)0 0/3 * * * ? 每三分钟触发一次