Ich bin verwirrt. Nachdem ich über diesen Thread gestolpert war , versuchte ich herauszufinden, wie man einen Countdown-Timer formatiert, der das Format hatte hh:mm:ss
.
Hier ist mein Versuch -
//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)));
Wenn ich also einen Wert wie versuche 3600000ms
, bekomme ich 01:59:00
, was falsch ist, da es sein sollte 01:00:00
. Natürlich stimmt etwas mit meiner Logik nicht, aber im Moment kann ich nicht sehen, was es ist!
Kann jemand helfen?
Bearbeiten -
Behoben. Hier ist der richtige Weg, um Millisekunden zu hh:mm:ss
formatieren -
//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))));
Das Problem war das TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Es hätte TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
stattdessen so sein sollen.
00:59:59
, es sollte sein01:00:00
.