获取调度下一次触发时间

需求:1、任务关联调度后,在页面上显示下一次执行(即调度的触发)时间。


技术约束:

         1、关联时,使用的是CronTrigger。

          1、业务中,只有将调度与任务关联时,才创建CronTrigg业务中,


解决方案1:从Scheduler中获取CronTrigger,然后调用getNextFireTime();

问题:返回的时间有时候不准确。

          比如:定义一个4点-5点,每隔一分钟运行的调度。若在4点30分25秒关联任务,下次运行时间应该是4点31分,但从接口中获取的时间是下午4点,即调度的开始时间,只有在调度触发一次之后,获取的才是正确的时间。


解决方案2:解析CronTrigger中定义的CronExpression。 

CronTrigger quatrzTrigger = (CronTrigger)scheduler.getTrigger(.....);
Date nexFireTime = getNextFireTime(quatrzTrigger.getCronExpression());


 private Date getNextFireTime(String cronExpression) {
  if (StringUtil.isEmptyString(cronExpression)){
   return null;
  }
  try {
   CronExpression cron = new CronExpression(cronExpression);
   Date nextFireDate = cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
   reeturn  nextFireDate ;

} catch (ParseException e) {
   log.error(e);
   return null;
  }
 }

 

                 

     

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值