介绍
Cron 表达式是一个具有时间含义的字符串,格式为
「秒数」 「分钟」 「小时」 「日期」 「月份」 「星期」 「年份」(可为空)
中间以空格分隔,最后一个代表年份的域非必须,可省略。
语法
域 | 取值范围 |
---|
秒 | [0, 59] |
分 | [0, 59] |
时 | [0, 23] |
日期 | [1, 31] |
月份 | [1, 12] 或 [JAN, DEC] |
星期 | [1, 7] 或 [MON, SUN]。若使用 [1, 7] 表达方式,1 代表星期一,7 代表星期日。 |
年 | [年份] |
特殊字符
字符 | 含义 | 范围 | 示例 |
---|
*
| 所有可能的值 | 所有域 | 月域中,* 表示每个月 |
,
| 列出枚举值 | 所有域 | 分钟域中,5,20 表示在第 5 分钟和 20 分钟触发 |
-
| 范围 | 所有域 | 分钟域中,5-20 表示从 5 分钟到 20 分钟之间每分钟触发一次 |
/
| 指定数值的增量 | 所有域 | 在分钟域中,3/20 表示从第 3 分钟开始,每 20 分钟触发一次 |
?
| 不指定值 | 日期域、星期域 | 当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为? |
L
| 最后一天 | 日期域、星期域 | 日期域中,L 表示某个月的最后一天。星期域中,L 表示一个星期的最后一天(星期日)。若L 前有具体内容,如:星期域中,6L 表示这个月的最后一个星期六 |
W
| 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件(不会跨过当前月份),连用字符LW 时表示为指定月份的最后一个工作日。 | 日期域 | 日期域中,5W 表示,如果 5 日是星期六,则将在最近的工作日星期五,即4日触发。如果 5 日是星期天,则将在最近的工作日星期一,即 6 日触发;如果 5 日在星期一到星期五中的一天,则就在 5 日触发 |
#
| 确定每个月第几个星期几,仅星期域支持该字符。 | 星期域 | 星期域中,4#2 表示某月的第二个星期四 |
案例
示例 | 说明 |
---|
0 15 10 ? * *
| 每天上午10:15执行任务 |
0 15 10 * * ?
| 每天上午10:15执行任务 |
0 0 12 * * ?
| 每天中午12:00执行任务 |
0 0 10,14,16 * * ?
| 每天上午10:00点、下午14:00以及下午16:00执行任务 |
0 0/30 9-17 * * ?
| 每天上午09:00到下午17:00时间段内每隔半小时执行任务 |
0 * 14 * * ?
| 每天下午14:00到下午14:59时间段内每隔1分钟执行任务 |
0 0-5 14 * * ?
| 每天下午14:00到下午14:05时间段内每隔1分钟执行任务 |
0 0/5 14 * * ?
| 每天下午14:00到下午14:55时间段内每隔5分钟执行任务 |
0 0/5 14,18 * * ?
| 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
0 0 12 ? * WED
| 每个星期三中午12:00执行任务 |
0 15 10 15 * ?
| 每月15日上午10:15执行任务 |
0 15 10 L * ?
| 每月最后一日上午10:15执行任务 |
0 15 10 ? * 6L
| 每月最后一个星期六上午10:15执行任务 |
0 15 10 ? * 6#3
| 每月第三个星期六上午10:15执行任务 |
0 10,44 14 ? 3 WED
| 每年3月的每个星期三下午14:10和14:44执行任务 |
0 15 10 ? * * 2022
| 2022年每天上午10:15执行任务 |
0 15 10 ? * * *
| 每年每天上午10:15执行任务 |
0 0/5 14,18 * * ? 2022
| 2022年每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
0 15 10 ? * 6#3 2022,2023
| 2022年至2023年每月第三个星期六上午10:15执行任务 |
0 0/30 9-17 * * ? 2022-2025
| 2022年至2025年每天上午09:00到下午17:30时间段内每隔半小时执行任务 |
0 10,44 14 ? 3 WED 2022/2
| 从2022年开始,每隔两年3月的每个星期三下午14:10和14:44执行任务 |
评论区