项目开发中遇到一个需求,根据cron表达式获取下一次执行时间,网上搜了下资料很多,选了一种,亲测可行。
private Date getNextTriggerTime(String cron){
if(cron == null || !CronExpression.isValidExpression(cron)){
return null;
}
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("Caclulate Date").withSchedule(CronScheduleBuilder.cronSchedule(cron)).build();
Date time0 = trigger.getStartTime();
Date time1 = trigger.getFireTimeAfter(time0);
Date time2 = trigger.getFireTimeAfter(time1);
Date time3 = trigger.getFireTimeAfter(time2);
long l = time1.getTime() -(time2.getTime() -time1.getTime());
return time1;
}