java - 最后实际火灾时间与预定火灾时间之间的差异

标签 java quartz-scheduler

我想获取作业应该执行的时间与最近执行的实际执行时间之间的延迟。例如,如果一个作业应该在晚上 8 点触发,但实际上是在晚上 8 点 10 分触发,则结果应该是 10 分钟。

我知道我可以使用Trigger.getPreviousFireTime()获取它最后一次实际执行的时间,但我看不到任何方法来获取相应的计划时间(例如上面的示例中的晚上 8 点),这可能吗?

最佳答案

在您的作业中使用以下代码:

@Override
public void execute(final JobExecutionContext context) {
    long diffInMillis =
                new Date().getTime() - context.getScheduledFireTime().getTime();
    //...
}

正如您可能猜到的那样,context.getScheduledFireTime() 是作业应该运行的时间(理想情况下差异应接近 0)。

请注意,如果您的作业迟到超过 10 分钟(可配置),它可能根本不会触发 - 这取决于您设置的失火指令。

关于java - 最后实际火灾时间与预定火灾时间之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249994/

相关文章:

java - 集群环境下quartz可以在不同节点之间共享同一个JOB吗?

spring-boot - org.quartz.SchedulerException : Jobs added with no trigger must be durable

java - 如何调试 JNI/C 库?

Java缓冲图像: Calculate Memory Size in Advance

java - Spring MVC - Controller 未加载

java - setCronExpression(CronExpression) 和 setCronExpression(String) 的区别

java - 如何在失败时重新安排 Apache Camel Quartz (CronScheduledRoutePolicy) 端点路由

java - Quartz - 在使用spring进行hibernate事务时,发生异常

Java AWT - 如何在 Arraylist 中保存图像

java - Optional.orElse 不使用匿名类型进行编译