Saltar al contenido

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

Después de de nuestra larga selección de datos dimos con la respuesta esta aprieto que presentan ciertos lectores. Te dejamos la respuesta y deseamos servirte de gran apoyo.

Solución:

Usted era De Verdad cerrar:

String.format("%02d:%02d:%02d", 
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -  
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), // The change is in this line
TimeUnit.MILLISECONDS.toSeconds(millis) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));   

Estabas convirtiendo horas a milisegundos usando minutos en lugar de horas.

Por cierto, me gusta tu uso de la TimeUnit API 🙂

Aquí hay un código de prueba:

public static void main(String[] args) throws ParseException 
    long millis = 3600000;
    String hms = 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)));
    System.out.println(hms);

Producción:

01:00:00

Me di cuenta de que mi código anterior se puede simplificar mucho usando una división de módulo en lugar de una resta:

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
    TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),
    TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));

Todavía usando el TimeUnit API para todos los valores mágicos y da exactamente el mismo resultado.

El método genérico para esto es bastante simple:

public static String convertSecondsToHMmSs(long seconds) 
    long s = seconds % 60;
    long m = (seconds / 60) % 60;
    long h = (seconds / (60 * 60)) % 24;
    return String.format("%d:%02d:%02d", h,m,s);

Si está utilizando apache commons:

DurationFormatUtils.formatDuration(timeInMS, "HH:mm:ss,SSS");

Agradecemos que quieras asentar nuestro cometido poniendo un comentario y dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *