Cron 获取下一次执行时间

本文介绍了一个用于解析和操作Cron表达式的实用工具类,包括获取Cron触发器、计算下一个触发时间以及解析Cron表达式的时间区间。通过这个工具类,开发者可以更方便地理解和使用Cron表达式,适用于调度任务的管理和监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Slf4j
public class CronUtil {
    private CronUtil() {
    }

    public static CronTrigger getCronTrigger(String cron) {
        if (!CronExpression.isValidExpression(cron)) {
            throw new RuntimeException("cron :" + cron + "表达式解析错误");
        }
        return TriggerBuilder.newTrigger().withIdentity("Caclulate Date").withSchedule(CronScheduleBuilder.cronSchedule(cron)).build();

    }

    public static Date getNextTriggerTime(String cron, Date start) {
        CronTrigger trigger = getCronTrigger(cron);
        if (start == null) {
            start = trigger.getStartTime();
        }
        return trigger.getFireTimeAfter(start);
    }

    public static Date getNextTriggerTime(String cron) {
        CronTrigger trigger = getCronTrigger(cron);
        return getNextTriggerTime(cron, null);
    }

    /**
     * 解析指定表达式获取时分秒区间
     *
     * @param cron
     * @return
     */
    public static TreeMap<String, String> getCronExecutionHHmmssTime(String cron) {
        CronTrigger trigger = getCronTrigger(cron);
        TreeMap<String, String> timeMap = new TreeMap<>(Comparator.comparingInt(Integer::valueOf));
        Date startTime = trigger.getStartTime();
        String key;
        while (true) {
            startTime = trigger.getFireTimeAfter(startTime);
            key = DateUtils.parseDate(startTime, "HHmmss");
            if (timeMap.containsKey(key)) {
                break;
            }
            timeMap.put(key, key);
        }
        return timeMap;

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值