每10秒将毫秒重置为零

时间:2013-12-07 05:08:38

标签: java android

如何在达到10秒后将currentTimeMillis()重置为零?

int  i  = 0;
while ( i != 10) {
    i  =  (int)(System.currentTimeMillis() / 1000) % 60;
    System.out.println(i);
}

即使应用程序已经死亡,毫秒也会继续计数。有什么想法吗?

5 个答案:

答案 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); 
}