Cron表达式简介以及常用的Cron表达式
作者:cndz
围观群众:768
更新于 2023-07-06 10:18:45
标签:cron cron表达式 cron表达式详解
简介Cron表达式是一种用于定义定时执行任务的语法,它可以让程序在指定的时间点或时间段自动运行。Cron表达式由6个字段组成,分别代表了任务执行的分钟、小时、日、月、周几、年份等信息。
Cron表达式的语法非常灵活,可以表示各种复杂的时间段。本文将介绍Cron表达式的基本语法以及常用的Cron表达式。
Cron表达式由6个字段组成,分别是:
秒(0~59 - * /) 分钟(0~59 - * /) 小时(0~23 - * /) 日(1~31 - * ? / L W C) 月(1~12/ JAN-DEC - * /) 周几(1~7/ SUN-SAT - * ? / L C # ,需要注意的是周几是总周日开始的,1代表周日即每周的第一天,7代表周六) 年(可选 1970~2099 - * / )
Cron表达式的每个字段都可以使用以下几种符号:
星号( )表示任意值,当这个符号出现在某个字段中时,它表示该字段可以取任意值。例如,`0 * ?` 表示每分钟执行一次。 问号(?)表示不关心该字段的取值,可以用来代替日或周几字段。例如,0 0 1 * * ?
表示每天凌晨1点执行。因为日和周几是可能存在冲突,所以?在cron表达式中只能有且存在一次。 减号(-)表示一个范围,例如,0 0 0-6 * * ?
表示每天凌晨0点到6点之间每分钟执行一次。 逗号(,)表示一个列表,例如,0 0 1,5,7 * * ?
表示每天凌晨1点、5点、7点各执行一次。 斜杠(/)表示一个步长,例如,0 */5 * * * ?
表示每隔5分钟执行一次。0 5/25 * * * ?
其中的5/25表示从第五分钟开始触发,每隔25分钟触发一次。即第五分钟、30分钟、55分钟各执行一次。 L 是 ‘last’ 的省略写法,可以表示日
或者星期
但是在两个场景下使用代表的含义不同,比如在day-of-month(日)
中表示一个月的最后一天。但是如果在day-of-week(星期)
域中表示7或者‘SAT’(周六),如果在day-of-week(星期)
域前面加上数字,表示一个月的最后一个星期几,例如‘6L’就表示一个月的最后一个星期五。 使用字符“W”来指定日期的最近工作日。例如:如果您将“15W”填写在日期域中,则表示这个月15号最近的工作日。因此,如果15号是周六,则任务会在14号触发。如果15号是周日,则任务会在周一也就是16号触发。如果在日期域中填写“1W”,即使1号是周六,任务也只会在下周一,即3号触发。“W”字符指定的最近工作日不能跨月份使用。字符“W”只能配合一个单独的数值使用,不能是一个数字段。例如,1-15W是错误的。“L”和“W”可以在日期域中联合使用,如LW表示这个月最后一周的工作日 字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。 字符“C”可以在日期域和星期域出现,被指定的“日历”所依赖。表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。例如,日期域是“5C”,表示关联的“日历”中第一天,或者这个月开始的第一天的后五天。星期域是“1C”,表示关联的“日历”中第一天,或者星期的第一天的后一天,也就是周日的后一天(周一) 。
常用表达式下面是一些常用的Cron表达式:
0/3 * * * * ?
0 * * * * ?
0 30 * * * ?
0 0 1 * * ?
0 * 14 * * ?
0 0 1 1 * ?
0 0 1 ? * WED
0 15 10 ? * MON-FRI
0 0 23 L * ?
0 0 1 1 1 ?
总结Cron表达式是一个非常强大的定时任务工具,它可以让程序在指定的时间点或时间段自动运行。本文介绍了Cron表达式的基本语法以及常用的表达式,希望对大家有所帮助。
在使用Cron表达式时,需要注意以下几点:
Cron表达式中的时间是基于服务器时间的,如果服务器时间设置不正确,Cron表达式的执行时间也会出现偏差。 Cron表达式的可读性较差,需要花费一些时间来熟悉和理解其语法规则。