Cron表达式

执行定时任务需要给一个时间计划,这个时间计划可以用 Cron 表达式来编写

官方文档 Cron 表达式是一个字符串,是用空格分割的六到七个属性。

语法:秒 分 时 日 月 周 年(可忽略年,Spring 不支持年)

定时任务只能精确到秒

image.png

Seconds:0-59,举例:0 就是整秒执行,1 就是在第1秒的时候执行

Day of week:值可以写 1-7,也可以写 SUN-SAT,1 就是周日,7 就是周六

特殊字符

,:枚举

  • (cron="7,9,23 * * * * ?"):代表任意时刻的7,9,23秒启动这个任务;

-:范围

  • (cron="7-20 * * * * ?"):任意时刻的 7-20 秒之间,每秒启动一次

*:任意

  • 指定位置的任意时刻都可以

/:步长

  • (cron="7/5 * * * * ?"):第 7 秒启动,每 5 秒一次;
  • (cron="*/5 * * * * ?"):任意时间启动之后,每 5 秒一次;

?:(出现在日和周几的位置)为了防止日和周冲突,如果1个精确了,另一个就得写?

  • (cron="* * * 1 * ?"):每月的 1 号,启动这个任务,如果两个都写精确值的话,可能会导致冲突,所以其中一个要使用?

L:(出现在日和周的位置)”,last:最后一个

  • (cron="* * * ? * 3L"):每月的最后一个周二

W: Work Day:工作日

  • (cron="* * * W * ?"):每个月的工作日触发
  • (cron="* * * LW * ?"):每个月的最后一个工作日触发

#: 第几个

  • (cron="* * * ? * 5#2"):5 代表周 4,#2 代表第 2 个,合起来就是每个月的第 2 个周 4

示例