SpringBoot获取Cron表达式当天第一次执行时间

时间:2022-11-24
本文章向大家介绍SpringBoot获取Cron表达式当天第一次执行时间,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//不废话,直接干

CronSequenceGenerator cronSequenceGenerator = new CronSequenceGenerator("0 15 9,21 * * ?");
Date date
= DateUtils.toDate(LocalDate.now()); Date yesterday = new Date(date.getTime() - 1000L); //昨天最后一秒的下一个时次,也就是今天第一个时次 Date firstCronTimeToday = cronSequenceGenerator.next(yesterday); System.out.println(firstCronTimeToday);

 为什么要减1000L呢?

因为Cron表达式最小单位是秒,因此需要先获取到今天00:00:00,然后减1秒,从昨天23:59:59开始计算。

其中DateUtils的代码如下

public class DateUtils {

public static Date toDate(LocalDate localDate){
        LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.of(0, 0, 0)); 
ZonedDateTime zdt
= localDateTime.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant());
}
}

最后看下quartz包是怎么实现的

 其实也是这么干的,为什么我没有用它的API,因为不知道它这API咋用的,就看了下原理。

原文地址:https://www.cnblogs.com/yanyan-rourou/p/16922971.html