出于某种原因,我得到了函数返回的一致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来表明我正在调用它。
答案 0 :(得分:0)
嘿,我刚刚为prev,new和elapsed变量添加了print语句。值是
上一次1343882409054
现在时间1343882409054
经过时间0
时间是3600
所以你的millisLeft总是3600。
但是如果你尝试使用
System.nanoTime()
值是,
上一次519222175869357
现在时间519222175923421
已用时间54064
时间是3545
因此,您必须更加精细,并考虑使用System.nanoTime()。