Messung der verstrichenen Zeit in Java
Frage:
Wie kann ich die Zeitspanne zwischen bestimmen zwei Zeitpunkte in Java? Konkret möchte ich startTime und endTime als Instanzvariablen in einer Klasse darstellen und deren Differenz in einer getDuration()-Methode berechnen. Allerdings gibt es eine Einschränkung: Ich muss Fälle behandeln, in denen startTime später als endTime liegt und dennoch ein genaues Ergebnis erhalte (z. B. startTime = 23:00, endTime = 1:00, Dauer = 2:00).
Antwort:
Um eine genaue Zeitmessung in Java zu erreichen, müssen Sie verwenden System.nanoTime(). Im Gegensatz zu System.currentTimeMillis() ist nanoTime speziell für die Messung der verstrichenen Zeit konzipiert.
Erklärung:
System.currentTimeMillis() stellt eine Wand bereit -Uhrzeit, die anfällig für Anpassungen und Korrekturen durch das System ist. Dies führt zu Inkonsistenzen bei der Messung der verstrichenen Zeit. Andererseits ist System.nanoTime() von diesen Korrekturen nicht betroffen und bietet eine präzise Messung von Zeitunterschieden, auch wenn startTime endTime überschreitet.
So implementieren Sie dies in Ihrer Klasse:
public class Stream { private long startTime; private long endTime; public long getDuration() { return endTime - startTime; } // ... }
Durch die Verwendung von System.nanoTime() können Sie genaue Zeitdauerberechnungen erhalten, selbst wenn Sie Zeitintervalle verarbeiten, die sich über Mitternacht erstrecken oder bei denen die Startzeit nach der Endzeit liegt.
Das obige ist der detaillierte Inhalt vonWie kann ich die Dauer zwischen zwei Zeitpunkten in Java genau messen, auch wenn die Startzeit nach der Endzeit liegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!