最近做了几个计划任务,其中用到了一些Cron表达式,简单学习了一下,简单记录一个笔记,做个分享。
一、Cron表达式语法
标准格式:[秒] [分] [时] [日] [月] [周] [年]
其中【年】可以省略,简略表达式为:[秒] [分] [时] [日] [月] [周]
序号 | 说明 | 必填 | 允许值 | 通配符 |
---|---|---|---|---|
1 | 秒 | 是 | 0-59 | , - * / |
2 | 分 | 是 | 0-59 | , - * / |
3 | 时 | 是 | 0-23 | , - * / |
4 | 日 | 是 | 1-31 | , - * ? / L W |
5 | 月 | 是 | 1-12 | , - * / |
6 | 周 | 是 | 1-7 | , - * ? / L # |
7 | 年 | 否 | 1970-2099 | , - * / |
二、通配符用途说明
逗号 ,
每个位置都可使用,当前位置多个不连续值/区间时候,用于分隔值/区间。
减号 -
每个位置都可使用,当前位置多个连续值时候,用于设定连续值的区间。
星号 *
每个位置都可使用,表示当前位置任意值
问号 ?
只能使用在【日】【周】位置,表示忽略当前位置,且两者中间必有一个使用"?",因此无法在指定日期的同时制定周,也无法指定周的同时指定日期。
斜杠 /
格式:[起始值]/[间隔],每个位置都可使用,当前位置制定时间和间隔,例:1/2 代表从1开始间隔2循环。
字母 L
只能使用在【日】【周】位置,L代表Last(最后),即字面理解最后一天最后一周。
字母 W
只能使用在【日】位置,属于【日】的专用,W代表WeekDay(周工作日),即字面理解工作日(仅指周一至周五,不受法定节假日影响)。
井号 #
格式:[第几周]/[周几],只能使用在【周】位置,属于【周】的专用,代表第几周的周几,例:1#2代表第一周的周一。
Ps:周数最高为5,周几为1-7的区间数,1-7代表周日-周六,每周均是从周日开始。
通配符的组合使用
L 和 W 的组合:因W属于【日】的专用,因此只能使用在【日】位置。且只能是 LW 不能是 WL,代表最后一个工作日,例:每月最后一个工作日:0 0 0 LW * ?