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);