Cron表达式

语法结构

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

  1. Seconds Minutes Hours DayofMonth Month DayofWeek Year
  2. Seconds Minutes Hours DayofMonth Month DayofWeek

Cron从左到右各个域的含义:秒 分 小时 月份中的日期 月份 星期 年

各个域的含义

字段允许值允许的特殊字符
Seconds0 ~ 59的整数,-*/ 四个字符
Minutes0 ~ 59的整数,-*/ 四个字符
Hours0 ~ 59的整数,-*/ 四个字符
DayofMonth1 ~ 31的整数(需注意月的天数),-*/?LWC 八个字符串
Month1 ~ 12的整数或则JAN ~ DEC,-*/ 四个字符
DayofWeek1 ~ 7的整数或则SUN ~ STA(1=SUN),-*/?LC# 八个字符串
Years1970 ~ 2099(可选,留空),-*/ 四个字符
  1. ,:表示列出枚举值。如果在Minutes域使用5,20,则表示在5分钟和20分钟的时候分别触发一次。
  2. -:表示范围。如果在Minutes域使用5-20,则表示从5分钟到20分钟每分钟都触发一次。
  3. *:表示匹配该域的任意值。如果在Minutes域使用*,则表示每分钟都会触发。
  4. /:表示起始时间开始触发,然后每隔固定时间触发一次。如果在Minutes域使用5/20,则表示在5分钟时触发一次,然后25分、45分分别触发一次。
  5. ?:只能用在DayofMonth和DayofWeek两个域。同样是匹配域的任意值,但实际情况不会,因为DayofMonth和DayofWeek会相互影响。如果希望在每月20日触发调度,不管20日是星期几,则只能用如下写法:10 10 15 20 * ?,其中最后一位只能用?,而不能使用*,如果使用*则表示不管星期几都会触发,实际上并不是这样。
  6. L:表示最后,只能用在DayofMonth和DayofWeek两个域。如果在DayofWeek域使用5L,则表示在最后一个星期四触发。
  7. W:表示有效工作日(周一到周五),只能用在DayofMonth域,系统将在离指定日期的最近的有效工作日触发。如果在DayofMonth域使用5W,表示如果5日是星期六,则将在最近的工作日4日(周五)触发;如果5日是星期日,则在6日(周一)触发;如果5日是在周一到周五中的一天,则就在5日触发。注意:W的最近寻找不会跨过月份。
  8. LW:L与W字符连用,表示在某个月最后一个工作日,即最后一个星期五。
  9. #:用于确定每月第几个星期几,只能用于DayofWeek域。如果在DayofWeek域使用4#2,则表示某个月的第二个星期三。

注意:
?字符仅被用于DayofMonth和DayofWeek两个域,表示不指定值,当两个子表达式其中之一被指定值后,为避免冲突,需要将另外一个子表达式的值设为?
L字符是单词last的缩写,仅被用于DayofMonth和DayofWeek两个域。它们在不同的子表达式中含义是不同的:用在DayofMonth表示最后一天,用在DayofWeek表示最后一个星期的最后一天(SAT)。
如果L前面有具体内容,它就有了其他含义。如:6L表示这个月的倒数睇6天,FRIL表示这个月的最后一个星期五。在使用L参数时,不要指定列表或范围,因为这会导致问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值