如何在达到10秒后将currentTimeMillis()重置为零?
int i = 0;
while ( i != 10) {
i = (int)(System.currentTimeMillis() / 1000) % 60;
System.out.println(i);
}
即使应用程序已经死亡,毫秒也会继续计数。有什么想法吗?
答案 0 :(得分:3)
你做不到。您无法控制System.currentTimeMillis()
生成的值,至少在没有重置系统时钟或严重错误的情况下也是如此。它返回当前时间。
答案 1 :(得分:3)
System.currentTimeMillis()是设备的系统时钟,因此在app死后它会继续运行。
如果要测量2个事件之间的时间间隔,请为2个事件定义2个日历c1和c2。然后将它们都设置为System.currentTimeMillis()。然后从另一个
中减去一个 Calendar c1=Calendar.getInstance():
Calendar c2=Calendar.getInstance():
OnEvent1{c1=System.currentTimeMillis();
}
OnEvent2{c2=System.currentTimeMillis();}
long intervalInMillis=c1.getTimeInMillis-c2.getTimeInMillis;
答案 2 :(得分:3)
或者不使用currentTimeMillis为什么不使用纳米时代。喜欢这个
long globalStartTime = System.nanoTime();
float currentTime = 0;
while ( currentTime < 10){
currentTime = (System.nanoTime() - globalStartTime) / 1000000000f;
System.out.println(currentTime);
}
答案 3 :(得分:2)
System.currentTimeMillis()
自1970年以来计算毫秒数。如果您想从您的午餐计算开始计算,我建议记录毫秒和午餐时间,并在每次获得新测量时减去。
答案 4 :(得分:1)
int i = 0;
Calendar cal = Calendar.getInstance();
while ( i != 10) {
i = Calendar.MILLISECOND;
System.out.println(i);
if(i==10)
cal.set(Calendar.MILLISECOND, 0);
}