我想计算设备上的最后一个事件与当前事件之间的时间差。但是用户总是可以通过设置系统时间来手动更改时间,因此可能与实际时间不同。有没有办法计算正确的时差?
问问题
149 次
3 回答
3
您可以System.nanoTime()
在两个句点之间使用,然后减去。与System.currentTimeMillis()
用户更改设备时间时的更改不同,System.nanoTime()
不会受到影响。
返回最精确的可用系统计时器的当前值,以纳秒为单位。
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示自某个固定但任意时间以来的纳秒 (可能在将来,因此值可能为负数)。此方法提供纳秒精度,但不一定提供纳秒精度。不保证值的变化频率。由于数值溢出,超过大约 292 年(263 纳秒)的连续调用的差异将无法准确计算经过的时间。
于 2012-11-20T05:50:37.290 回答
1
试试这个
String time1 = "22:55:00";
String time2 = "23:05:00";
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date date1 = format.parse(time1);
Date date2 = format.parse(time2);
long difference = date2.getTime() - date1.getTime();
于 2012-11-20T05:49:37.037 回答
1
我使用以下代码在我的游戏中实现近乎恒定的 FPS:
long now = SystemClock.uptimeMillis(), then = this.then, actualSleep;
actualSleep = DT - ((now < then) ? (Long.MAX_VALUE - then) + now : now - then);
Thread.sleep((actualSleep < 0) ? 0 : actualSleep);
于 2012-11-20T06:35:38.397 回答