Cron 表达式格式说明
Cron表达式是一个字符串,字符串以5个空格隔开,分为6个字段,每一个字段代表一个含义,Cron语法格式如下:
Seconds(秒) Minutes(分) Hours(小时) DayofMonth(日期) Month(月份) DayofWeek(星期)
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日期 | 1-31 | , - * / ? |
月份 | 1-12 | , - * / |
星期 | 1-7或者SUN-SAT | , - * / ? # |
需要注意的是:1-7分别对应 周日-周一,也就是 1>周日;2>周一,以此类推
Cron 表达式特殊字符说明
特殊字符 | 代表含义 |
---|---|
, | 表示列出枚举值。例如:在Seconds字段使用1,2,5,则意味着在1、2、5秒都会触发一次 |
- | 表示范围,例如Seconds字段使用5-20,表示从5-20秒每秒都会触发一次 (包括边界值5和20秒) |
* | 表示匹配任意值,假如在Seconds字段使用*, 即表示每秒都会触发一次 |
/ | 表示起始时间开始触发,然后每隔固定时间触发一次,例如在Seconds字段使用6/2,表示从第6秒开始(包括第6秒),每隔两秒都会触发一次 |
? | 只能用在DayofMonth和DayofWeek两个字段。表示无特定值,类似于* |
# | 用于确定每个月第几个星期几,只能出现在DayofWeek字段。例如在4#2,表示某月的第二个星期三。 |
疑问
“0/2 * * 18 * ?” 表示每月的18号每间隔两秒都会触发一次,至于为什么是 18 ,因为我今天写博客的时间是18号
关于特殊符号 /
,好多博主讲解说 "0/2 * * 18 * ?"
和 "0/2 * * 18 * *"
是不一样的,?
不能改成*
,但是为什么我测试无论用 ?
还是 *
都是一样的呢,有大佬知道这两个符号的区别吗,欢迎下方留言!
常用表达式:
0/2 * * * * ? 表示每2秒 执行任务
0 0/2 * * * ? 表示每2分钟 执行任务
0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
0 0 12 * * ? 每天中午12点触发
0 15 10 ? * * 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 15 10 * * ? 每天上午10:15触发
0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 15 10 15 * ? 每月15日上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发