上次实际和预定开火时间之间的差异

时间:2012-09-03 14:42:38

标签: java quartz-scheduler

我希望在作业应该执行的时间和最近执行的实际执行时间之间得到延迟。例如,如果一份工作应该在晚上8点开火,并且实际上是在晚上8点半开火,那么结果应该是10分钟。

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

1 个答案:

答案 0 :(得分:0)

在你的工作中使用以下代码:

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

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

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