Estou confuso. Depois de tropeçar nessa discussão, tentei descobrir como formatar um cronômetro de contagem regressiva que tivesse o formato hh:mm:ss
.
Aqui está a minha tentativa -
//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)));
Então, quando tento um valor como 3600000ms
, recebo 01:59:00
, o que está errado, pois deveria estar 01:00:00
. Obviamente, há algo errado com minha lógica, mas, no momento, não consigo ver o que é!
Alguém pode ajudar?
Editar -
Corrigido. Aqui está a maneira correta de formatar milissegundos para hh:mm:ss
formatar:
//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))));
O problema era esse TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Deveria ter sido isso TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
.
00:59:59
, deveria ser01:00:00
.