corn表达式
corn表达式作用:
在使用定时调度任务的时候,最常用的就是corn表达式,通过corn表达式指定任务在某个时间点或周期的执行。
corn表达式配置方便简洁,无论是Spring的@Scheduled
还是Quartz框架,都支持cron表达式。
corn表达式结构:
Corn表达式是一个字符串,分为6个或7个字段,其中前六个字段为必选,第七个字段为可选。每个字段之间用空格进行分隔,corn表达式对英文大小写不敏感。
Corn表达式有如下两种语法格式:
- Seconds Minutes Hours Day Month Week Year
- Seconds Minutes Hours Day Month Week
Corn每个字段的含义:
从左到右(用空格分开):秒
分
小时
月份中的日期
月份
星期中的日期
年份
位置 | 时间域(en) | 时间域(ch) | 允许值范围 | 允许特殊字符 |
---|---|---|---|---|
1 | Seconds | 秒 | 0-59 | , - * / |
2 | Minutes | 分钟 | 0-59 | , - * / |
3 | Hours | 小时 | 0-23 | , - * / |
4 | Day | 日 | 1-31 | , - * / L W C |
5 | Month | 月 | 1-12 | , - * / |
6 | Week | 星期 | 1-7(1:星期天,6:星期六) | , - * ? / L C # |
7 | Year | 年(可选) | 1970-2099 | , - * / |
常用字符含义:
- 【*】:每的意思。在不同的字段上,就代表每秒,每分,每小时等。
- 【-】:指定值的范围。比如[1-10],在秒字段里就是每分钟的第1到10秒,在分就是每小时的第1到10分钟,以此类推。
- 【,】:指定某几个值。比如[2,4,5],在秒字段里就是每分钟的第2,第4,第5秒,以此类推。
- 【/】:指定值的起始和增加幅度。比如[3/5],在秒字段就是每分钟的第3秒开始,每隔5秒生效一次,也就是第3秒、8秒、13秒,以此类推。
- 【?】:仅用于【日】和【周】字段。因为在指定某日和周几的时候,这两个值实际上是冲突的,所以需要用【?】标识不生效的字段。比如【0 1 * * * ?】就代表每年每月每日每小时的1分0秒触发任务。这里的周就没有效果了。
极少用字符含义:
-
SUN:仅用于【周】字段,表示星期日。也可以用数字1设置。周日到周六分别为SUN,MON,TUE,WED,THU,FRI和SAT,对应数字1,2,3,4,5,6,7。目前Quartz支持。
-
L:即last,用于【日】【周】字段。这里需要注意的是,在不同的字段的不同使用方式,其含义有所差别。
-
- 用于日字段:直接使用L代表每个月的最后一天。也支持偏移量的方式,配置[L-1]则代表每月的倒数第二天。
- 用于周字段:直接使用L代表每周的最后一天,也就是等效于[7]或[SAT],但是如果配合上数字,比如[7L],则代表每个月最后一个周六,等效于[SATL]。目前Quartz支持。
corn表达式实例:
*/2 * * * * ? 或 0/2 * * * * ? :每两秒执行一次
0 0 1 1 * ? * :每月的1日的凌晨1点执行
0 0 9,12,17 * * ? :每天上午9点,下午12点,17点执行
0 10 12 * * ? 或 0 10 12 ? * * 或 0 10 12 * * ? *:每天上午12:10执行
0 30 1 L * ? :每月最后一日的凌晨1:30执行
0 0 12 ? * WED :每周三中午12点执行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构