Java での経過時間の測定
質問:
間の期間を確認するにはどうすればよいですか? Java には 2 つの時点がありますか?具体的には、startTime と endTime をクラス内のインスタンス変数として表現し、getDuration() メソッドでそれらの差を計算したいと考えています。ただし、制約があります。startTime が endTime より遅い場合でも、正確な結果を得る必要がある (例: startTime = 23:00、endTime = 1:00、duration = 2:00)。
答え:
Java で正確な時間測定を実現するには、以下を利用する必要があります。 System.nanoTime()。 System.currentTimeMillis() とは対照的に、nanoTime は経過時間を測定するために特別に設計されています。
説明:
System.currentTimeMillis() は壁を提供します。 - クロック時間。システムによる調整や修正の影響を受けやすい。これにより、経過時間を測定する際に不一致が生じます。一方、System.nanoTime() はこれらの修正の影響を受けず、startTime が endTime を超えている場合でも、時差を正確に測定できます。
これをクラスに実装するには:
public class Stream { private long startTime; private long endTime; public long getDuration() { return endTime - startTime; } // ... }
System.nanoTime() を利用することで、真夜中にまたがる時間間隔を処理する場合や、startTime が endTime の後に発生する場合でも、正確な継続時間を計算できます。
以上が開始時刻が終了時刻を過ぎている場合でも、Java で 2 つの時点間の期間を正確に測定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。