我想获取作业应该执行的时间与最近执行的实际执行时间之间的延迟。例如,如果一个作业应该在晚上 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/