Java - System.currentTimeMillis();没有回归差异

时间:2012-08-02 04:11:00

标签: java

出于某种原因,我得到了函数返回的一致3600:

private static long getCountdownLeft() {
    long now = System.currentTimeMillis();
    long elapsedMillis = now - initialTime; //difference of current 'current' time
    long millisLeft = secondsOfGame * 1000 - elapsedMillis;
    return millisLeft/1000;
}

public static void Main(String[] args ) {
     System.out.println("Time is " + getCountdownLeft());
}

private static int secondsOfGame = 3600;
private static long initialTime = System.currentTimeMillis();

这是事件驱动的。我希望每次调用函数时都会看到时间上的差异。我只是使用main来表明我正在调用它。

1 个答案:

答案 0 :(得分:0)

嘿,我刚刚为prev,new和elapsed变量添加了print语句。值是

  

上一次1343882409054

     

现在时间1343882409054

     

经过时间0

     

时间是3600

所以你的millisLeft总是3600。

但是如果你尝试使用

  

System.nanoTime()

值是,

  

上一次519222175869357

     

现在时间519222175923421

     

已用时间54064

     

时间是3545

因此,您必须更加精细,并考虑使用System.nanoTime()。