使System.currentTimeMillis()停止计数?

时间:2015-05-12 20:25:03

标签: java time

在我的代码中,我有一个在顶部运行的计时器,其值为System.currentTimeMillis()/1000.0。当游戏开始时,名为tStart的值设置为System.currentTimeMillis,当游戏结束时,名为tEnd的值将设置为System.currentTimeMillis()。当游戏结束时,时间值从System.currentTimeMillis()更改为tEnd - tStart,但不是保持一个值,而是保持计数。我该如何阻止它?

3 个答案:

答案 0 :(得分:0)

您无法停止系统时钟。 你可以找到能够做你想做的第三方秒表课程。

喜欢Apache,其中包含org.apache.commons.lang.time.StopWatch

更一般地说,你需要将你的tStart和tEnd保存到变量中,如果你需要再次启动计时器并将前一圈与新一圈联系起来,只需找到偏移(tStart2 - tEnd)

答案 1 :(得分:0)

currentTimeMillis以毫秒为单位显示当前时间。你不能让它停下来,只读它。 你能展示你的代码吗?看起来这应该仍然有效。

答案 2 :(得分:0)

我想,你应该试着解释一下,你到底想要什么时候收到。 为了最简单的目的,您可以使用这个简单的秒表实现(并最终通过所需的功能扩展它的功能):

public class Stopwatch {

    private long startTime;
    private long endTime;
    private boolean running;

    public Stopwatch(){

    }

    public void start(){
        this.startTime = System.nanoTime();
        running = true;
    }

    public void stop(){
        this.endTime = System.nanoTime();
        running = false;
    }

    public long getElapsedTime(){
        return (this.running ? System.nanoTime() : this.endTime) - this.startTime;
    }

    public boolean isRunning(){
        return this.running;
    }

    public void reset(){
        this.startTime = 0L;
        this.endTime = 0L;
    }

}