cron 表达式介绍
概要描述
本文简单介绍一下 cron 表达式。
详细说明
cron 表达式的构成
Cron表达式是由7个子表达式组成的字符串,子表达式用于描述个别细节的时间。Cron的格式如下,子表达式之间用空格相分隔:
秒 分 时 日 月 周 年(可选)
每个字段有不同的有效值,允许不同的字符,如下表所示:
字段名 | 有效值 | 有效字符 |
---|---|---|
秒 | 0-59 | - * / |
分 | 0-59 | , - * / |
时 | 0-23 | , - * / |
日 | 0-31 | , - * ? / L W |
月 | 0-11 或 JAN-DEC | , - * / |
周 | 1-7 或 SUN-SAT | , - * ? / L # |
年(可选) | 空 或 1970-2099 | , - * / |
有效值讲解
秒位:可以引用0-59之间数字;
分位:可以引用0-59之间的数字;
时位:可以引用0-23之间的数字;
日位:可以引用0-31之间的数字;
月位:可以引用0-11之间的数字,其中0表示一月、1表示二月,后面依次类推。或者用字符串“JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV , DEC” 表示;
周位:可以引用1-7之间的数字,其中1表示周日、2表示周一,后面依次类推。或者用字符串“SUN, MON, TUE, WED, THU, FRI , SAT”表示;
年位:是可选字段,可以为空,也可以引用1970-2099之间的数字。
有效字符讲解
,
:离散的方式指定数值。例如,如果将“1,3,5”写在小时位,则表示在1点、3点、5点分别执行一次;
-
:表示在某个时间段之间。例如,如果将“1-24”写在秒位,则表示在1-24秒之间执行;
/
:语义为“每多久执行一次”。前面写开始起点,后面填时间间隔。例如,如果将“0/15”写在分位,则表示从“0”分开始每隔15分钟执行一次;
*
:代表整个时段;
?
:只可用于日位和周位。表示无法确定的值。假如在天位给定5,我们难以推算出对应周几(会根据不同月份变化),需在周位填写“?”;
L
:用在日表示一个月中的最后一天,用在周表示每周的最后一天。当用在周位时,如果“L”前有数字则表示该月最后一个星期几。例如,如果将“4L”写在周位,表示在每月的最后一个星期三执行;
W
:离给定日期最近的工作日(周一到周五)。如将“15W”放在日字段上表示为“到15日最近的工作日”;
#
:只允许出现在周位,表示第几个周几。例如,如果将“4#2”写在周字段,则表示在每月的第2个周三执行。
cron 表达式范例
- 每隔10分钟执行一次:0 */10 * * * ?
- 每隔3秒执行一次:*/3 * * * * ?
- 在每天23点15分执行一次:0 15 23 * * ?
- 在每天凌晨1点执行一次:0 0 1 * * ?
- 每月3号的凌晨1点执行一次:0 0 1 3 * ?
- 每月最后一天的0点执行一次:0 0 0 L * ?
- 每周星期天凌晨1点执行一次:0 0 1 ? * L
- 每月的最后一个星期三下午15点执行:0 0 15 ? * 4L
- 在26分、29分、33分执行一次:0 26,29,33 * * * ?
- 每天的0点、12点、18点、21点执行一次:0 0 0,12,18,21 * * ?
- 每天的17点到18点之间从17:05:23开始每15分钟执行一次:23 5/15 17 * * ?