Jestem zmieszany. Po napotkaniu tego wątku próbowałem wymyślić, jak sformatować licznik czasu, który miał ten format hh:mm:ss
.
Oto moja próba -
//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)));
Kiedy więc wypróbowuję wartość typu „ 3600000ms
dostaję” 01:59:00
, co jest błędne, ponieważ powinno być 01:00:00
. Oczywiście coś jest nie tak z moją logiką, ale w tej chwili nie widzę, co to jest!
Czy ktoś może pomóc?
Edytować -
Naprawione. Oto właściwy sposób na sformatowanie milisekund do hh:mm:ss
sformatowania -
//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))));
Problem polegał na tym TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Powinno tak być TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
.
00:59:59
, powinno być01:00:00
.