如何获得自上次拆分以来的最后一次时间间隔?

how to get last time interval since last split?

我想运行一个秒表从我的程序开始

并记录一些时间间隔的时间间隔。

我应该选择哪种秒表?

import com.google.common.base.Stopwatch;

org.apache.commons.lang.time.StopWatch

例如:

Start -----> split 1 (1:00 min from split 0) ----> split 2 (0:30 from split 1) -->  split 3 (0:35 from split 2)

而不是

Start -----> split 1 (1:00 min from start) ----> split 2 (0:30 from from start) ----> split 3 (0:35 from from start) 

还有比这更优雅的方法吗?

stopWatch.split();
stopWatch.getSplitTime() - lastSpiltTime;
last splitTime = stopWatch.getSplitTime();

不幸的是,这是唯一的方法。我有同样的需求,但 Apache StopWatch 对此没有原生支持。

我的做法略有不同:

private void lapWatchAndLog( StopWatch watch, String messageForLap ) {

    watch.stop();
    LOGGER.info( String.format( "Time: [%s] %s", watch.getTime(), messageForLap ) );
    watch.reset();
    watch.start();
}

或者你可以使用这个:

private long stopWatchGap(StopWatch stopWatch) {
    try {
        stopWatch.stop();
        return stopWatch.getTime();
    } finally {
        stopWatch.reset();
        stopWatch.start();
    }
}

刚好到return差距值