Heim  >  Artikel  >  Java  >  Wie konvertiere ich Millisekunden in das Format „hh:mm:ss“?

Wie konvertiere ich Millisekunden in das Format „hh:mm:ss“?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 03:51:021000Durchsuche

How to Convert Milliseconds to

Millisekunden in das Format „hh:mm:ss“ konvertieren

Es kann vorkommen, dass Sie Millisekunden in das bekannte Format „hh:mm:ss“ umwandeln müssen. Format „hh:mm:ss“, das normalerweise zur Darstellung der Zeit verwendet wird. Dies kann eine häufige Anforderung in Anwendungen wie Countdown-Timern sein.

Verstehen des Problems

Möglicherweise haben Sie versucht, die Konvertierung mit dem folgenden Code durchzuführen:

<code class="java">//hh:mm:ss
String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));</code>

Dieser Code funktioniert jedoch möglicherweise nicht wie erwartet. Bei einer Eingabe von 3600000 ms (entspricht 1 Stunde) erhalten Sie beispielsweise „01:59:00“ anstelle des korrekten „01:00:00“.

Identifizierung des Problems

Bei näherer Betrachtung liegt das Problem in dieser Zeile:

<code class="java">TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))</code>

Hier konvertieren Sie Stunden in Millisekunden, indem Sie Minuten statt Stunden verwenden.

Korrektur die Logik

Der richtige Code sollte stattdessen TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) verwenden:

<code class="java">//hh:mm:ss
String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));</code>

Diese Änderung stellt sicher, dass die Zeitumrechnung erfolgt Wenn Sie es richtig machen, erhalten Sie das gewünschte Ergebnis von „01:00:00“ für 3600000 ms.

Vereinfachte Version

Sie können den Code weiter vereinfachen, indem Sie a verwenden Moduldivision statt Subtraktion:

<code class="java">String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),
    TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));</code>

Diese Version bleibt effizient und liefert gleichzeitig die gleichen genauen Ergebnisse.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich Millisekunden in das Format „hh:mm:ss“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn