学习目标:
本篇博文学习目标如下:
掌握 Cron表达式
学习内容:
Cron表达式:
1、Cron表达式的含义:
Cron表达式是一个具有时间含义的字符串,字符串以5-6个空格隔开,分为6~7个域,格式为X X X X X X X。
其中X是一个域的占位符。
最后一个代表年份的域非必须,可省略。
单个域有多个取值时,使用半角逗号,隔开取值。
每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。
注意:每个域最多支持一个前导零。
说明:
例如指定2023年每天上午8:19执行任务,
Cron表达式可指定为0 19 8 ? * * 2023或0 19 08 ? * * 2023,而不能指定为0 19 008 ? * * 2023。
域取值
下表为Cron表达式中六个域能够取的值以及支持的特殊字符。
如下表所示:
**
月份:
**
**
星期
**
特殊字符:
Cron表达式中的每个域都支持一定数量的特殊字符,每个特殊字符有其特殊含义。
特殊字符的含义 及示例 如下图所示:
取值示例如下所示:
学习产出:
提示:这里统计学习计划的总量
例如:
- [x] 1、符号释义
(1) :表示所有可能的值
(2)/:表示数值的增量,简单来说,比如分写上0/5表示从0分开始,每隔5分钟
(3)?:仅用在天(月)和天(周),表示不指定值,当其中一个有值时,另外一个需要设为?
- [x] 2、字段允许字符
- [x] 一、秒:0-59 , - * /
(1)、38:表示第38秒
(2)、6,16,26:表示第6秒、第16秒和第26秒
(3)、1-5:表示从1秒到5秒,就是1 2 3 4 5 秒
(4)、:表示每一秒
(5)、3/10:表示从第3秒开始,每隔10秒,就是3 13 23 33 秒
- [x] 二、分:0-59 , - * /
(1)、27:表示第27分钟
(2)、8,19,26:表示第8分钟、第19分钟和第26分钟
(3)、1-5:表示从1秒到5分,就是第1 2 3 4 5 分钟
(4)、:表示每一分钟
(5)3/10:表示从第3分钟开始,每隔10分钟,就是3 13 23 33 分钟
- [x] 三、时:0-23 , - * /
(1)、10:表示早上10点
(2)、22:表示晚上10点
(3)、3,6,18,23:表示凌晨3点,早上6点,傍晚6点和晚上11点
(4)、9-17:表示朝九晚五,就是9 10 11 12 13 14 15 16 17 点
(5)、:表示每小时
(6)、8/3:表示从早上8点开始,每隔3小时
- [x] 四、天(月):1-31 , - * / ? L W C
(1)、31:表示31号(注意按照实际情况考虑月份的天数,有的月份是没有31号的)
(2)、6,16,26:表示6号、16号和26号
(3)、8-18:表示8号到18号
(4)、:表示所有可能的值(当指定为星号时,天(周)需指定为?)
(5)、6/5:表示从6号开始,每隔5天
(6)、?:当天(周)指定任意值的时候,天(月)需要设置为?
(7)、L:表示一个月中的最后一天
(8)、6L:表示倒数第6天
(9)、15W:W指工作日,如果15号不是周六日,则表示15号当天;如果15号是周六,则表示14号;如果15号是周 日,则表示16号;如果31W是周日,则31W表示29号(周五),不会跨月
(10)、LW:指最后一个工作日
(11)、13C:表示第13天
- [x] 五、月:1-12 , - * /
(1)、8:表示8月份
(2)、3,13,23:表示3月份、13月份和23月份
(3)、3-9:表示3月份到9月份
(4)、:表示所有可能的值
(5)、3/2:表示从3月份开始,每隔2个月,(就是5 7 9 11 次年5 次年7 次年9…)
(6)、1-12:也可以用JAN-DEC表示
- [x] 六、天(周):MON-SAT , - * / ? L C #
(1)、MON:表示周一
(2)、MON,TUE,FRI:表示周一,周二和周五
(3)、MON-FRI:表示从周一到周五
(4)、MON-WED,SAT:表示从周一到周三,和周六(就是周一、周二、周三和周六)
(5)、mon,tue,wed,thu,fri,sat,sun:表示周一到周日(大小写均可,取星期英文前三个字母,注意星期四是thu,而不是thur)
(6)、7L:表示最后一个周六(效果等同于SATL)(L表示last最后的意思,7表示周六,6表示周五,类推,1表示周日)
(7)、6C:表示周五以及之后包含周五的日期(感觉效果FRI一样,具体还没深究)
(8)、7#2:表示第二个周六(#前面的数字表示星期,1表示周日,2表示周一,以此类推;#后面的数字表示第几个)
- [x] 七、年:留空 2020-2099 , - * /
(1)、年:留空 2020-2099 , - * /
(2)、2050:表示2050年
(3)、2021,2023,2025:表示2021年、2023年和2025年
(4)、2021-2026:表示2021年到2026年
(5)、*:表示所有可能的值
(6)、2020/5:表示从2020年开始,每隔5年,(就是2020,2025,2030,2035…)
实例如下图所示: