Я запутался. Наткнувшись на эту ветку, я попытался выяснить, как отформатировать таймер обратного отсчета, который имел формат hh:mm:ss
.
Вот моя попытка -
//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)));
Поэтому, когда я пытаюсь получить значение вроде 3600000ms
, я получаю 01:59:00
, что неправильно, так как должно быть 01:00:00
. Очевидно, что с моей логикой что-то не так, но сейчас я не вижу, что это!
Кто-нибудь может помочь?
Редактировать -
Починил это. Вот правильный способ форматировать миллисекунды для hh:mm:ss
форматирования -
//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))));
Проблема была в этом TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Так и должно было быть TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
.
00:59:59
, так и должно быть01:00:00
.