首页 > 解决方案 > Spring scheduler - 获取下一个事件的时间

问题描述

我有一个如下所示的 SpringBoot 调度程序:

 @Scheduled(cron = "*/10 * * * * * ")   // Every 10 seconds
    public void scheduleTaskUsingCronExpression() {
        long now = System.currentTimeMillis() / 1000;
        System.out.println("schedule tasks using cron jobs - " + now);
    }

我想得到下一个活动的时间,所以我可以在每个活动结束时打印出来。我读过 using CronExpression,它有一个 next() 方法,但不确定我如何获得 CronExpression。或者我是否创建一个 CronExpression 并以某种方式传递它而不是使用@Scheduled注释?

标签: spring-bootscheduled-tasks

解决方案


我不确定我能否获得准确的间隔时间,但我可以从以下代码中获得大致正确的下一次运行时间。

@Value("${cron.schedule}") String schedule;

@Scheduled(cron = "${cron.schedule}")   // Every 10 seconds
public void scheduleTaskUsingCronExpression() {
    var expression = CronExpression.parse(schedule);
    var result = expression.next(LocalDateTime.now());
    System.out.println("schedule tasks using cron jobs - " + result);
}

推荐阅读