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 * * ?
阅读剩余
THE END