Problem:
Ein Entwickler, der mit einem Countdown-Timer arbeitet, stößt auf Schwierigkeiten beim Konvertieren von Millisekunden in das gewünschte Format „hh:mm:ss“. Ihr erster Versuch führte zu einer falschen Zeitanzeige, insbesondere bei Werten über einer Stunde.
Lösung:
Das Hauptproblem rührte von einem logischen Fehler bei der Umrechnung von Stunden in Millisekunden her Minuten statt Stunden. Konkret verwendete der Code:
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
während er hätte sein sollen:
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
Codedemonstration:
Hier ist ein überarbeiteter Codeausschnitt das formatiert Millisekunden korrekt in „hh:mm:ss“:
String hms = 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)));
Testfall:
long millis = 3600000; String hms = ... // Replace with revised code from above System.out.println(hms); // Expected output: 01:00:00
Zusätzlich kann der Code mithilfe der Moduldivision optimiert werden statt Subtraktion:
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));
Beide Varianten erreichen die korrekte „hh:mm:ss“-Formatierung und nutzen die TimeUnit-API, um Konvertierungen nahtlos abzuwickeln.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Millisekunden in das Format „hh:mm:ss“ in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!