¿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.