2

デバイスの最後のイベントと現在のイベントの時間差を計算したいと考えています。ただし、ユーザーはシステム時刻を設定することでいつでも手動で時刻を変更できるため、実際の時刻とは異なる場合があります。正しい時差を計算する方法はありますか?

4

3 に答える 3

3

2 つのピリオドの間で使用System.nanoTime()してから減算できます。System.currentTimeMillis()ユーザーがデバイスの時刻を変更したときの変更とは異なり、System.nanoTime()影響はありません。

最も正確な使用可能なシステム タイマーの現在の値をナノ秒単位で返します。

このメソッドは、経過時間を測定するためにのみ使用でき、システム時間または壁時計時間の他の概念とは関係ありません。返される値は、固定された任意の時間からのナノ秒を表します (おそらく将来であるため、値は負の可能性があります)。この方法はナノ秒の精度を提供しますが、必ずしもナノ秒の精度ではありません。値が変更される頻度については保証されません。約 292 年 (263 ナノ秒) を超える連続する呼び出しの違いは、数値のオーバーフローのため、経過時間を正確に計算できません。

于 2012-11-20T05:50:37.290 に答える
1

SystemClock.uptimeMillis()を使用する

次のコードを使用して、ゲームでほぼ一定の 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 に答える
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 に答える