Cron表达式详细解读

Cron表达式详细解读名字解释 cron 读音英 kr n 美 kr n 译为 计划任务 是任务在约定的时间执行已经计划好的工作 该词来源于希腊语 chronos 原意是时间语法结构 Cron 表达式是一个字符串 字符串以 5 或 6 个空格隔开 分为 6 或 7 个域 每一个域代表一个含义 Cron 有如下两种语法格式 秒 分钟 小时 月份的第几天 月份 周的第几天 年份 1 Seconds Minutes Hours

名字解释

cron:读音英 [‘krɔ:n]/美 [‘krɒn],译为“计划任务”,是任务在约定的时间执行已经计划好的工作,该词来源于希腊语chronos(χρόνος),原意是时间

 语法结构

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

  分钟 小时 月份的第几天 月份 周的第几天 年份
1 Seconds  Minutes  Hours  DayofMonth  Month  DayofWeek  Year
2 Seconds  Minutes  Hours  DayofMonth  Month  DayofWeek   

PS:

  1. corn从左到右(用空格隔开):秒 ,分钟, 小时, 月份的第几天, 月份, 周的第几天, 年份
  2. Spring的@Scheduled注解中的cron仅支持6个域的表达式,也就是不能设定年,如果超过六个则会报错
  3. DayofMonth和DayofWeek会相互影响

字段含义

字段 允许值 允许的特殊符号
秒(Seconds) 0~59的整数 , – * /    四个字符
分(Minutes 0~59的整数 , – * /    四个字符
小时(Hours 0~23的整数 , – * /    四个字符
日期(DayofMonth 1~31的整数(但是你需要考虑你月的天数) ,- * ? / L W C     八个字符
月份(Month 1~12的整数或者 JAN-DEC , – * /    四个字符
星期(DayofWeek 1~7的整数或者 SUN-SAT (1=SUN) , – * ? / L C #     八个字符
年(可选,留空)(Year 1970~2099 , – * /    四个字符

符号说明

符号 含义 备注
* 表示匹配该域的任意值 如在Minutes域使用*, 即表示每分钟都会触发事件
表示匹配域的任意值(仅用在DayofMonth和DayofWeek两个域 如在每月的20日触发调度,不管20日到底是星期几 表达式为:0 0 0 20 * ?
表示范围 如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
/ 表示起始时间开始触发,然后每隔固定时间触发一次 如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次
表示列出枚举值 如在Minutes域使用5,20,则意味着在5和20分每分钟触发一次
L 表示最后,(仅用在DayofMonth和DayofWeek两个域 如在DayofWeek域使用5L,意味着在最后的一个星期四触发
W 表示有效工作日(周一到周五,仅用在DayofMonth域)系统将在离指定日期的最近的有效工作日触发事件,且W的最近寻找不会跨过月份 如在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发
LW 表示在某个月最后一个工作日,即最后一个星期五  
# 用于确定每个月第几个星期几(仅用在DayofWeek域) 如4#2,表示某月的第二个星期三

常用表达式

 (0)0/20 * * * * ? 表示每20秒 调整任务   (1)0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务   (2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业   (3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作   (4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点   (5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时   (6)0 0 12 ? * WED 表示每个星期三中午12点   (7)0 0 12 * * ? 每天中午12点触发   (8)0 15 10 ? * * 每天上午10:15触发   (9)0 15 10 * * ? 每天上午10:15触发   (10)0 15 10 * * ? * 每天上午10:15触发   (11)0 15 10 * * ? 2005 2005年的每天上午10:15触发   (12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发   (13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发   (14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发   (15)0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发   (16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发   (17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发   (18)0 15 10 15 * ? 每月15日上午10:15触发   (19)0 15 10 L * ? 每月最后一日的上午10:15触发   (20)0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发   (21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发   (22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

注意事项 

  •        有些子表达式能包含一些范围或列表

              子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

  •        “*”字符代表所有可能的值

                   “*” 在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天

 

  •     “/”字符用来指定数值的增量 
  •   “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 

              当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

  •   “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 

                如果在“L”前有具体的内容,它就具有其他的含义了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217063.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:26
下一篇 2026年3月18日 上午10:26


相关推荐

  • GridView编辑删除操作

    GridView编辑删除操作

    2021年12月15日
    38
  • 科大讯飞,让AI更通人性

    科大讯飞,让AI更通人性

    2026年3月14日
    2
  • maskrcnn训练步骤_神经网络如何预测

    maskrcnn训练步骤_神经网络如何预测今天我们来说一下,如何使用自己训练出来的Mask_RCNN模型,或是官方自己的模型权重来进行预测:该Mask_RCNN版本基于:Python3,Keras,TensorFlow,我使用的具体版本为:Python3.6.3TensorFlow1.7Keras2.1.5tensorflow安装:https://blog.csdn.net/qq_15969343/article/details/7………

    2026年4月15日
    5
  • 理解keras中的sequential模型

    理解keras中的sequential模型keras 中的主要数据结构是 model 模型 它提供定义完整计算图的方法 通过将图层添加到现有模型 计算图 我们可以构建出复杂的神经网络 Keras 有两种不同的构建模型的方法 Sequentialmo 本文将要讨论的就是 keras 中的 Sequential 模型 理解 Sequential 模型 Sequential 模型字面上的翻译是顺序

    2026年3月18日
    1
  • OSPF报文类型

    OSPF报文类型OSPF 报文头格式 OSPF 用 IP 报文直接封装协议报文 协议号为 89 OSPF 分为 5 种报文 Hello 报文 DD 报文 LSR 报文 LSU 报文和 LSAck 报文 OSPF 这五种报文具有相同的报文头格式 长度为 24 字节 报文格式 字段解释 Version1 字节版本 OSPF 的版本号 对于 OSPFv2 来说 其值为 2 字段长度含义

    2025年11月30日
    6
  • C Winform OpenFileDialog 控件

    C Winform OpenFileDialog 控件OpenFileDial 控件又称打开文件对话框 主要用来弹出 Windows 中标准的 打开文件 对话框 publicvoidBu Click objectsender EventArgse nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp OpenFileDial newOpenFileD nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp file

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号