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.