Con la actualización a Java SE 8 y superior, ahora tenemos disponible el paquete java.time
el cual nos permite hacer un mejor uso de los tipos de datos de fechas y tiempos. Sin embargo, muchas librerías y componentes aún no lo soportan. En este artículo vamos a ver la forma que he encontrado más efectiva para convertir entre uno y otro.
AVISO
Este artículo supone que el lector ya sabe ¿para qué es? y ¿cómo funciona? el Java Time API, no se entrará en detalle sino que directamente se mostrarán los ejemplos de conversión.
LocalDate
LocalDate a Date
1
2
3
4
5
6
7
8
9
10
|
// Crea LocalDate de prueba
LocalDate localDate = LocalDate.of(2019, 1, 1); // 01 de Enero, 2019
System.out.println("localDate = " + localDate);
// Conversión a Date
Date utilDate = Date.from(localDate.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant());
System.out.println("utilDate = " + utilDate);
|
Date a LocalDate
1
2
3
4
5
6
7
8
9
10
11
12
|
// Crea Calendar y Date de prueba
Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.JANUARY, 1);
Date utilDate = calendar.getTime(); // 01 de Enero, 2019
System.out.println("utilDate = " + utilDate);
// Conversión a LocalDate
LocalDate localDate = utilDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
System.out.println("localDate = " + localDate);
|
LocalDateTime
LocalDateTime a Date
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// Crea LocalDate de prueba
LocalDateTime localDateTime =
LocalDateTime.of(2019, 1, 1, 17, 25, 5); // 01 de Enero, 2019, 17:25:05
System.out.println("localDateTime = " + localDateTime);
// Conversión a Date
Date utilDate = Date.from(
localDateTime
.atZone(ZoneId.systemDefault())
.toInstant()
);
System.out.println("utilDate = " + utilDate);
|
Date a LocalDateTime
1
2
3
4
5
6
7
8
9
10
11
|
// Crea Calendar y Date de prueba
Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.JANUARY, 1, 17, 25, 5);
Date utilDate = calendar.getTime(); // 01 de Enero, 2019, 17:25:05
System.out.println("utilDate = " + utilDate);
// Conversión a LocalDateTime
LocalDateTime localDateTime = utilDate.toInstant()
.atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("localDateTime = " + localDateTime);
|