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!