¿Cómo convertir milisegundos al formato “hh: mm: ss”?

Estoy confundido. Después de tropezar conest thread, traté de descubrir cómo formatear un temporizador de cuenta regresiva que tenía el formatohh:mm:ss.

Aquí está mi intento -

//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)));   

Entonces, cuando intento un valor como3600000ms, Yo obtengo01:59:00, lo cual está mal ya que debería ser01:00:00. ¡Obviamente hay algo mal con mi lógica, pero por el momento, no puedo ver qué es!

¿Alguien puede ayudar

Edit -

Arreglado. Aquí está la forma correcta de formatear milisegundos ahh:mm:ss formato

//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))));

El problema era esteTimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)). Debería haber sido esteTimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) en su lugar.

Respuestas a la pregunta(34)

Su respuesta a la pregunta