Convertir tiempo a milisegundos en Java

1. Información general

En este tutorial rápido, ilustraremos varias formas de convertir el tiempo en milisegundos de época Unix en Java .

Más específicamente, usaremos:

  • Core Java's java.util.Date y Calendar
  • API de fecha y hora de Java 8
  • Biblioteca Joda-Time

2. Core Java

2.1. Usando la fecha

En primer lugar, definamos una propiedad millis que contenga un valor aleatorio de milisegundos:

long millis = 1556175797428L; // April 25, 2019 7:03:17.428 UTC

Usaremos este valor para inicializar nuestros diversos objetos y verificar nuestros resultados.

A continuación, comencemos con un objeto Date :

Date date = // implementation details

Ahora, estamos listos para convertir la fecha en milisegundos simplemente invocando el método getTime () :

Assert.assertEquals(millis, date.getTime());

2.2. Usando Calendario

Asimismo, si tenemos un objeto Calendar , podemos usar el método getTimeInMillis () :

Calendar calendar = // implementation details Assert.assertEquals(millis, calendar.getTimeInMillis());

3. API de fecha y hora de Java 8

3.1. Usando Instant

En pocas palabras, Instant es un punto en la línea de tiempo de época de Java.

Podemos obtener la hora actual en milisegundos del Instant :

java.time.Instant instant = // implementation details Assert.assertEquals(millis, instant.toEpochMilli());

Como resultado, el método toEpochMilli () devuelve la misma cantidad de milisegundos que definimos anteriormente.

3.2. Usando LocalDateTime

De manera similar, podemos usar la API de fecha y hora de Java 8 para convertir un LocalDateTime en milisegundos:

LocalDateTime localDateTime = // implementation details ZonedDateTime zdt = ZonedDateTime.of(localDateTime, ZoneId.systemDefault()); Assert.assertEquals(millis, zdt.toInstant().toEpochMilli());

Primero, creamos una instancia de la fecha actual. Después de eso, usamos el método toEpochMilli () para convertir ZonedDateTime en milisegundos.

Como sabemos, LocalDateTime no contiene información sobre la zona horaria. En otras palabras, no podemos obtener milisegundos directamente de la instancia LocalDateTime .

4. Joda-Time

Si bien Java 8 agrega gran parte de la funcionalidad de Joda-Time, es posible que deseemos usar esta opción si estamos en Java 7 o antes.

4.1. Usando Instant

En primer lugar, podemos obtener los milisegundos del sistema actual de la instancia de la clase Joda-Time Instant utilizando el método getMillis () :

Instant jodaInstant = // implementation details Assert.assertEquals(millis, jodaInstant.getMillis());

4.2. Usando DateTime

Además, si tenemos una instancia de Joda-Time DateTime :

DateTime jodaDateTime = // implementation details

Luego podemos recuperar los milisegundos con el método getMillis () :

Assert.assertEquals(millis, jodaDateTime.getMillis());

5. Conclusión

En conclusión, este artículo demuestra cómo convertir el tiempo en milisegundos en Java.

Finalmente, como siempre, el código completo de este artículo está disponible en GitHub.