1、Cron表达式简介
Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为X X X X X X X
。其中X
是一个域的占位符。最后一个代表年份的域非必须,可省略。单个域有多个取值时,使用半角逗号,
隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。每个域最多支持一个前导零。
格式:
{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
说明
设置的最小时间间隔需大于或等于定时任务的超时时间,且不小于10秒。如果不指定时区,默认为执行定时任务实例的系统内部时区。
2、域取值
下表为Cron表达式中七个域能够取得值以及支持的特殊字符。
域 | 是否必需 | 取值范围 | 特殊字符 |
秒 | 是 | [0, 59] | * , - / |
分钟 | 是 | [0, 59] | * , - / |
小时 | 是 | [0, 23] | * , - / |
日期 | 是 | [1, 31] | * , - / ? L W |
月份 | 是 | [1, 12]或[JAN, DEC] | * , - / |
星期 | 是 | [1, 7]或[MON, SUN]。若您使用[1, 7]表达方式, | * , - / ? L # |
年 | 否 | [当前年份,2099] | * , - //3、 |
3、特殊字符
Cron表达式中的每个域都支持一定数量的特殊字符,每个特殊字符有其特殊含义。
特殊字符 | 含义 | 示例 |
| 所有可能的值。 | 在月域中, |
| 列出枚举值。 | 在分钟域中, |
| 范围。 | 在分钟域中, |
| 指定数值的增量。 | 在分钟域中, |
| 不指定值,仅日期和星期域支持该字符。 | 当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为 |
| 单词Last的首字母,表示最后一天,仅日期和星期域支持该字符。 重要 指定 |
|
| 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。 | 在日期域中 |
| 确定每个月第几个星期几,仅星期域支持该字符。 | 在星期域中, |
4、取值示例
以下为Cron表达式的取值示例。
示例 | 说明 |
| 每天上午10:15执行任务 |
| 每天上午10:15执行任务 |
| 每天中午12:00执行任务 |
| 每天上午10:00点、下午14:00以及下午16:00执行任务 |
| 每天上午09:00到下午17:00时间段内每隔半小时执行任务 |
| 每天下午14:00到下午14:59时间段内每隔1分钟执行任务 |
| 每天下午14:00到下午14:05时间段内每隔1分钟执行任务 |
| 每天下午14:00到下午14:55时间段内每隔5分钟执行任务 |
| 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
| 每个星期三中午12:00执行任务 |
| 每月15日上午10:15执行任务 |
| 每月最后一日上午10:15执行任务 |
| 每月最后一个星期六上午10:15执行任务 |
| 每月第三个星期六上午10:15执行任务 |
| 每年3月的每个星期三下午14:10和14:44执行任务 |
| 2022年每天上午10:15执行任务 |
| 每年每天上午10:15执行任务 |
| 2022年每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
| 2022年至2023年每月第三个星期六上午10:15执行任务 |
| 2022年至2025年每天上午09:00到下午17:30时间段内每隔半小时执行任务 |
| 从2022年开始,每隔两年3月的每个星期三下午14:10和14:44执行任务 |