Cron表达式详解


表达式解释

秒 分 时 日 月 周 年(一般省略)

0 0/5 * * * ?

符号解释

*:表示所有可能的值

/:表示数值的增量,简单来说,比如分写上0/5表示从0分开始,每隔5分钟

?:仅用在 ,表示不指定值,当其中一个有值时,另外一个需要设为?


0-59 , - * /

  • 26:表示第26秒
  • 5,16,27:表示第5秒、第16秒和第27秒
  • 1-5:表示从1秒到5秒,就是1 2 3 4 5 秒
  • *:表示每一秒
  • 2/15:表示从第2秒开始,每隔15秒,就是2 17 32 47 秒

0-59 , - * /

  • 26:表示第26分钟
  • 5,16,27:表示第5分钟、第16分钟和第27分钟
  • 1-5:表示从1秒到5分,就是第1 2 3 4 5 分钟
  • *:表示每一分钟
  • 2/15:表示从第2分钟开始,每隔15分钟,就是2 17 32 47 分钟

0-23 , - * /

  • 10:表示早上10点
  • 22:表示晚上10点
  • 2,8,18,23:表示凌晨2点,早上8点,傍晚6点和晚上11点
  • 9-17:表示朝九晚五,就是9 10 11 12 13 14 15 16 17 点
  • *:表示每小时
  • 10/2:表示从早上10点开始,每隔2小时

1-31 , - * / ? L W C

  • 31:表示31号(注意有的月份是没有31号的)
  • 5,10,15:表示5号、10号和15号
  • 8-17:表示8号到17号
  • *:表示所有可能的值(当指定为星号时,天(周)需指定为?)
  • 5/9:表示从5号开始,每隔9天
  • ?:当天(周)指定任意值的时候,天(月)需要设置为?
  • L:表示一个月中的最后一天
  • 6L:表示倒数第6天
  • 15W:W指工作日,如果15号不是周六日,则表示15号当天;如果15号是周六,则表示14号;如果15号是周日,则表示16号;如果31W是周日,则31W表示29号(周五),不会跨月
  • LW:指最后一个工作日
  • 15C:表示第15天(不是很明白这个,使用15和15C貌似效果相同?)

1-12 , - * /

  • 10:表示10月份
  • 5,10,11:表示5月份、10月份和11月份
  • 4-8:表示4月份到8月份
  • *:表示所有可能的值
  • 5/2:表示从5月份开始,每隔2个月,(就是5 7 9 11 次年5 次年7 次年9…)
  • 1-12:也可以用JAN-DEC表示

MON-SAT , - * / ? L C #

  • MON:表示周一
  • MON,TUE,FRI:表示周一,周二和周五
  • MON-FRI:表示从周一到周五
  • MON-WED,SAT:表示从周一到周三,和周六(就是周一、周二、周三和周六)
    mon,tue,wed,thu,fri,sat,sun:表示周一到周日(大小写均可,取星期英文前三个字母,注意星期四是thu,而不是thur)
  • 7L:表示最后一个周六(效果等同于SATL)(L表示last最后的意思,7表示周六,6表示周五,类推,1表示周日)
  • 6C:表示周五以及之后包含周五的日期(感觉效果FRI一样,具体还没深究)
  • 7#2:表示第二个周六(#前面的数字表示星期,1表示周日,2表示周一,以此类推;#后面的数字表示第几个)

省略 2020-2099 , - * /

  • 2050:表示2050年
  • 2020,2030,2040:表示2020年、2030年和2040年
  • 2020-2030:表示2020年到2030年
  • *:表示所有可能的值
  • 2020/10:表示从2020年开始,每隔10年,(就是2020,2030,2040…)

举例

  • 每隔5分钟执行一次(从0分开始)
    0 0/5 * * * ?

  • 从0时开始,每小时执行一次
    0 0 0/1 * * ?

  • 每天的7点30分
    0 30 7 * * ?

  • 工作日的早上6点30分(即是周一到周五,每天早上的6点30分)
    0 30 7 ? * MON-FRI

  • 每个月的最后一天早上的10点整
    0 0 10 L * ?

  • 每个月的最后一个工作日的晚上6点30分(18:30)
    0 30 18 LW * ?

  • 朝九晚五,每小时
    0 0 9-17 * * ?

  • 2020年的8月份每个星期六和星期日早上10点28分28秒
    28 28 10 ? 8 1,7 2020

    1,7中,1表示周日,7表示周六

  • 每个月的倒数第二天的早上8点整
    0 0 8 L-1 * ?

    L表示最后一天(倒数第一天),L-1则表示倒数第二天,以此类推

  • 其他例子

    0 0 12 * * ? 每天中午12点触发
    0 15 10 ? * * 每天上午10:15触发
    0 15 10 * * ? 每天上午10:15触发
    0 15 10 * * ? * 每天上午10:15触发
    0 15 10 * * ? 2005 2005年的每天上午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 L * ? 每月最后一日的上午10:15触发
    0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
    0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
    0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

注意点

  • 一般是有6个位置,分别表示 秒 分 时 日 月 周 年(一般省略)
  • 6个位置中的 表示一个月中的第几天,即是几月几号中的几号; 表示一周中的第几天,周日为第一天,周六为第七天
  • 月 和 周 不能同时指定,其中必定有一个是 ?
  • ? 只能用在
  • 2-10:符号 - 表示范围区间
  • 2/10:符号 / 表示频率,从2开始,每隔10,即2,12,22…类推
  • 2,10:符号 , 表示和,2,10表示2和10
  • L:last的缩写,表示最后,只能用在 ,一般和数字搭配使用,如L在 中表示一个月中的最后一天,L-1则表示每个月的倒数第二天;3L在中则表示最后一个星期二

Cron表达式生成器

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Cron表达式是一种用于指定定时任务执行时间的字符串表达式。它由6个字段组成,分别表示秒、分、小时、天、月、周,每个字段都有一些特定的取值范围和取值规则。 以下是Cron表达式的格式: ``` <秒> <分> <小时> <日> <月> <周> <年> ``` 其中,年是可选的,其它字段都是必须的。以下是各个字段的取值范围和取值规则: - 秒 (0-59) - 分 (0-59) - 小时 (0-23) - 日 (1-31) - 月 (1-12) - 周 (0-7,0和7都表示周日) 在Cron表达式中,每个字段都可以是一个具体的数字,也可以是一个范围、一个列表或者一个通配符。以下是一些例子: - *:表示所有可能的值,比如“*”在分钟字段中表示每分钟都执行。 - ?:表示未指定,比如在日字段中表示不关心是几号。 - -:表示范围,比如在小时字段中表示10点到12点。 - /:表示间隔,比如在秒字段中表示每隔5秒执行一次。 - ,:表示列表,比如在周字段中表示周一和周二。 验证Cron表达式的方法有很多种,下面是一种Java实现的示例: ```java import org.quartz.CronExpression; public class CronUtils { public static boolean isValid(String cronExpression) { try { new CronExpression(cronExpression); return true; } catch (Exception e) { return false; } } } ``` 这个示例使用了Quartz框架提供的CronExpression类来解析和验证Cron表达式。如果传入的表达式格式不正确,会抛出异常并返回false,否则返回true。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值