1

我想获得作业应该执行的时间与最近一次执行的实际执行时间之间的延迟。例如,如果一个作业应该在晚上 8 点触发,而它实际上是在晚上 8.10 触发的,那么结果应该是 10 分钟。

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

4

1 回答 1

0

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

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

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

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

于 2012-09-03T14:56:21.573 回答