Estoy confundido. Después de tropezar con este hilo, traté de descubrir cómo formatear un temporizador de cuenta regresiva que tenía el formato hh: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 como 3600000ms
, obtengo 01:59:00
, lo que está mal, ya que debería ser 01:00:00
. Obviamente hay algo mal con mi lógica, pero por el momento, ¡no puedo ver qué es!
¿Alguien puede ayudar?
Editar -
Arreglado. Aquí está la forma correcta de formatear milisegundos para hh:mm:ss
formatear:
//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 fue este TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Debería haber sido esto TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
en su lugar.
00:59:59
, debería ser01:00:00
.