Как преобразовать миллисекунды в формат «чч: мм: сс»?

Я запутался. Наткнувшись на этот поток, я попытался выяснить, как отформатировать таймер обратного отсчета, который имел формат чч: мм: сс .

Вот моя попытка -

//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
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 (миллис)) . Вместо этого должно было быть это TimeUnit.HOURS.toMinutes (TimeUnit.MILLISECONDS.toHours (миллис)) .

165
задан Community 23 May 2017 в 12:26
поделиться