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 „ 3600000msdostaję” 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:sssformatowania -
//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.