feed twitter facebook LinkedIn facebook

Java » Milisegundos a Hora en Java

marzo 29, 2007 por Víctor Cuervo 6 Comentarios Imprimir Imprimir

Cuando estamos haciendo pruebas de rendimiento de nuestros programas, una forma muy sencilla de medir el tiempo de ejecución en Java es invocando a la función System.currentTimeMillis() entre dos puntos de nuestro programa. Esta función te da los milisegundos transcurridos desde el 1 de enero de 1970. Esta fecha es tomada como estándar en el mundo de la computación y es denominada "the epoc".

Posteriormente lo que haremos será restar el tiempo obtenido en los dos puntos y como resultado nos dará el tiempo de ejecución entre estos dos puntos en milisegundos.

Puede ser que como dato técnico esté bien el ver los tiempos en milisegundos, pero en otras necesitaremos ver el dato en un formato de hora, minutos y segundos. Para estos casos no podemos utilizar la función SimpleDataFormat, ya que esta te formatea el dato de los milisegundos desde el 1 de enero de 1970. Es por ello que no nos vale.

Para resolverlo vamos a hacerlo de una forma más "manual", pero muy sencilla.

La idea es la siguiente. Lo primero es dividir los milisegundos entre 3600000. Este valor representa el número de milisegundos de una hora. A si que partiendo la cantidad de milisegundos que tenemos entre este valor tendremos las horas.

hora = milisegundos/3600000;

Ahora hay que ver cuando milisegundos quedan como resto de la división. El resto lo obtenemos mediante el operador %.

restohora = milisegundos%3600000;

Ahora, de los milisegundos restantes hay que ver cuantos son minutos. Es por ello que dividimos entre 60000. Que son los milisegundos equivalentes a un minuto. El código será como el anterior, primero los minutos y luego el resto.

minuto = restohora/60000;
restominuto = restohora%60000;

Con el resto de los minutos aplicaremos la misma técnica para calcular los segundos. En este caso el divisor será 1000. Ya que un segundo son 1000 milisegundos.

Solo nos quedará el volcar por pantalla nuestro resultado.

System.out.println(hora + ":" + minuto + ":" + segundo + "." + restosegundo);

Visualizar el ejemplo | Descargar el código

tags: ,

Artículos relacionados:

6 comentarios »

RSS feed para los comentarios de esta entrada. TrackBack URI

  1. Alf
    febrero 15, 2011 #

    Gracias por el post. Me ha sido muy útil.

    Un saludo

  2. yukinomairi
    octubre 3, 2012 #

    Muchas gracias por el post. Ha sido de gran ayuda :D

  3. Víctor Cuervo
    octubre 11, 2012 #

    @Alf, @yukinomairi,

    Muchas gracias por el comentario. Se agradecen mucho y animan a seguir escribiendo más cosas.

  4. Carlos
    agosto 23, 2013 #

    Exelente me ayudo mucho … al momento de comprobar el valor del resultado de mi programa java con la duracion q me muestra el explorador de windows o un reproductor no son los mismo

    Me gustaria obtener un valor mas exacto no se como podria hacerlo gracias

  5. Víctor Cuervo
    agosto 27, 2013 #

    @Carlos,

    Me alegro que te haya servido. Ten en cuenta que el tiempo que te devuelve los milisegundos puede tener depreciación dependiendo de la precisión de la JVM y del sistema operativo.

    Adicionalmente como elemento más preciso tienes el método System.nanoTime().

    Espero que te sirva. Saludos.

  6. Lucy
    julio 2, 2014 #

    Muchas gracias!! me ayudo muchisimo :D

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*