1

私のアプリケーションでは、イベントの終了時刻を含むJSONを解析する必要があります。このイベントが進行中のとき、私はそのエベットのファイナライズまでの残り時間を計算する必要があります。これを行うには、次のコードを使用します。

// I get the time and convert it from millis to seconds
long end = System.currentTimeMillis() / 1000;                      
techsTime.add((int) (queue.event.get("event0").endtime - end));

秒単位の時間を取得したら、それをd、h、m、sに変換します。これは、OptimusBlackやHTCDesireなどの一部のデバイスでは魅力のように機能しています。しかし、今日、私は友人のZTE Bladeでアプリをテストしましたが、イベントの残り時間は非常に奇妙です。元のものから非常に離れた負の数と数字で表示されます。さまざまな値でアプリをテストしましたが、パターンはありません。乱数のようなものです。例:

Optimus Black-> 21m 32s
ZTE Blade-> -38m -57s

System.currentTimeMillis()は両方のデバイスで異なる可能性があると思いましたが、どちらもOSとしてCM7を使用しています。

4

2 に答える 2

2

いずれかのデバイスの時計が正しく設定されていない可能性があると思います。あなたが与える時間抽出物では、違いは正確に1時間のように見えます。これは、間違った時計設定の原因である可能性があります. 時間設定を検討するときは、タイムゾーンにも注目してください。両方のデバイスが同じ時刻を示している可能性がありますが、そのうちの 1 つが異なるタイム ゾーンで構成されています。

最新のデバイスがネットでクロックを同期しないのは非常に奇妙ですが、たとえば ZTE ではまだ可能です。

于 2012-04-09T18:21:41.287 に答える
1

使用System.nanotime()- 2 つのイベント間の時間を測定するために特別に作成されています。 1ミリ秒ごとに更新されないSystem.currentTimeMillis()システムクロックを使用するため、信頼性が低く、異なる結果が得られます.

于 2012-04-09T18:18:15.617 に答える