Cron 表达式
2025-01-19 本文已影响0人
Tinyspot
1. 基础
Cron 表达式,用于配置定时任务
1.1 语法
CRON 表达式是一个字符串,以 5 或 6 个空格隔开,分为 6 或 7 个域,每一个域代表一个含义
语法格式:秒 分 时 日期 月份 星期 [年份]
* * * * * * [year]
| | | | | | |
| | | | | | +--- 年份(可选):四位数的年份
| | | | | +----- 月份 (1 - 12)
| | | | +------- 日期 (1 - 31)
| | | +--------- 周/星期 (1-7) 注:0 和 7 都表示星期天
| | +----------- 小时 (0 - 23)
| +------------- 分钟 (0 - 59)
+------------- 秒 (0 - 59)
说明:
Seconds 秒,范围为 0-59
Minutes 分钟,范围为 0-59
Hours 小时,范围为 0-23(24小时制)
Day of the Month 月内日期,范围为1-31
Month 月份,可以用数字表示(1-12),也可以月份的英文简写(如Jan、Feb等)。
Day of the Week 周内日期,范围为0-7(或1-7,具体取决于系统),其中0或7通常代表周日,1-6分别代表周一至周六。也可以使用星期英文简写(如Sun、Mon等)。
Year 四位数的年份
1.2 特殊字符
| 字符 | 含义 | 示例 |
|---|---|---|
| * | 表示匹配域的任意值 | |
| / | 步长,表示起始时间开始触发,然后每隔固定时间触发一次 |
*/5 * * * * ?:每隔 5 秒执行一次 0 */1 * * * ?:每隔 1 分钟执行一次 0 5/20 * * * ?: 表示在第 5 分钟触发一次,之后每 20 分钟触发一次,即 5、 25、45 等分别触发一次 0 0/30 * * * ?: 表示每小时的第 0 分钟和第 30 分钟 |
| - | 范围 |
0 0/30 9-17 * * ?:9~17点内每半小时执行一次 |
| , | 列表,使用逗号分隔多个值 |
0 0 10,14,16 * * ?:每天上午 10 点,下午 2 点,4 点执行一次 |
| # | 表示每个月第几个星期几 | |
| W | 有效工作日 | |
| L | 表示最后,只能出现在日和星期两个域 | |
| LW | 在某个月最后一个工作日,即最后一个星期五 |
补充:
数字/步长 表示一个范围内的数字,每隔“步长”选取一个数字。例如,*/5 指的是每 5 分钟。
起始-结束 表示一个区间,如 10-12 指的是 10 到 12 之间的数字。
起始-结束/步长 结合了区间和步长,如 10-20/5 指的是从 10 到 20 之间每隔 5 取一个数
2. Java 定时任务
格式 秒 分 小时 日 月 周 [年]
工具 https://tool.lu/crontab/
Linux
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)
Java(Spring)
* * * * * *
- - - - - -
| | | | | |
| | | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | | +--------------- day of month (1 - 31)
| | +-------------------- hour (0 - 23)
| +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)
Java(Quartz)
* * * * * * *
- - - - - - -
| | | | | | |
| | | | | | + year [optional]
| | | | | +----- day of week (1 - 7) sun,mon,tue,wed,thu,fri,sat
| | | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | | +--------------- day of month (1 - 31)
| | +-------------------- hour (0 - 23)
| +------------------------- min (0 - 59)
+------------------------------ second (0 - 59)
4. References
CRON 表达式详解 https://help.aliyun.com/document_detail/133509.html