cron表达式一共有七位,最后一位是年,可以省略,所以我们可以写六位:

第一位: 秒,取值0-59

第二位:分,取值0-59

第三位:小时,取值0-24

第四位:日期(天),取值1-31

第五位:月,取值1-12

第六位:星期,取值1-7,指星期一、星期二...;注意:1代表星期天,2代表星期一

第七位:年,可以留空,取值1970-2099

cron中,还有一些特殊的符号,含义如下:

1*可以理解为每的意思,每秒,每分,每天,每月,每年...
2?问号只能出现在日期和星期这两个位置,表示这个位置的值不确定,每天3点执行,所以第六位星期的位置,我们是不需要关注的,就是不确定的值。同时:日期和星期是两个相互排斥的元素,通过问号来表明不指定值。比如,1月10日,比如是星期1,如果在星期的位置是另指定星期二,就前后冲突矛盾了。
3-表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12
4,表达一个列表值,如在星期字段中使用“1,2,4”,则表示星期一,星期二,星期四
5/表示起始时间开始触发,然后每隔固定时间触发一次。例如在分钟使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次
6L表示最后,只能出现在日期和星期。如果在星期使用5L,意味着在最后的一个星期四触发
7W表示有效工作日(周一到周五),只能出现在日期,系统将在离指定日期的最近的有效工作日触发事件。例如:在日期上使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份
8LW这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五
9#用于确定每个月第几个星期几,只能出现在日期上。例如在4#2,表示某月的第二个星期三

下面举一些常用的例子:

"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触发 
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L

crontab执行时间计算 - 在线工具

正则表达式可视化视图工具

更多推荐

Schedule 定时任务cron表达式