cron表达式详解

cron表达式详解

形如* * * * * *这种的表示时间的表达式称之为cron表达式

  • Cron表达式支持七个域(一般只使用6个域)

    • 名称合法值特殊字符
      0-59, - * /
      0-59, - * /
      0-23, - * /
      1-31, - * ? / L W C
      1-12, - * /
      1-7 (1代表周日,7代表周六), - * ?/ L C #
      年 (可省略)1970-2099, - * /
    • 说明

      • 月的合法值可以使用英文单词缩写:JAN-DEC
      • 周的合法值可以使用英文单词缩写:MON-SUN。如果采用数字:1代表周日、7代表周六。
      • ,:表示一个列表。举例:使用在秒域中10、20、30。表示10秒、20秒、30秒
      • - :表示一个范围。举例:使用在秒域中1-3。表示1秒、2秒、3秒
      • * :表示所有合法值。举例:使用在秒域中*。表示每1秒
      • / :表示递增。举例:使用在秒域中0/5。表示从第0秒开始每隔5秒
      • :只能使用在日和周两个域中,表示不指定:日和周两个域如果同时指定就可能会发生冲突。举例:每个月1号的星期三。这里无法保证每个月1号都是星期三,这是不现实的,所以如果指定了每月1号那么周的域就用?代替、反之如果指定了周,那么日域就用?代替。
      • # :只能使用在周域中,用于指定月份中的第几周的第几天。举例:1#2表示第二个星期日(注意1是星期日)
      • L:只能使用在日和周两个域中,表示合法值中的最后一天。注意:周域上的最后一天是周六
      • w:只能使用在日域中,工作日(周一到周五)。举例:使用在日域中15w,表示离15号最近的工作日,如果15号是工作日那么结果就是15号。如果15号是星期日那么结果就是16号
  • Cron表达式举例

    • 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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

勇者lin

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值