Diferentes formas de convertir java.util.Date a java.time.LocalDate en Java

Antes de Java 8 para manejar la hora y las fechas, teníamos Fecha, Calendario, Marca de tiempo (java.util), pero había varios problemas de rendimiento y algunos métodos y clases estaban en desuso, por lo que Java 8 introdujo algunos conceptos nuevos API de fecha y hora ( también conocido como Joda time API’) presente en el paquete java.time.

Java 7: fecha, calendario, marca de tiempo presente dentro del paquete java.util.

Java 8: las API de fecha y hora están presentes dentro del paquete java.time.

Diferentes formas de convertir java.util.Date a java.time.LocalDate:

  1. Uso de Instancia y ZonedDateTime
  2. Usando Instant y Date.getTime()
  3. Usando ofInstant() y ZoneId.systemDefault()

Método 1: Uso de Instancia y ZonedDateTime

Acercarse:

  • Primero convertiremos el objeto de fecha en un objeto instantáneo.
  • Cada objeto instantáneo está asociado con el zoneId, por lo que debemos proporcionar el zoneId.
  • Por último, lo convertiremos en un objeto LocalDate.

Ejemplo:

  • En este programa, convertiremos el objeto de fecha en un método instantáneo que devuelve un objeto instantáneo y no toma parámetros. 
  • Ahora necesitamos asignarle zoneId usando el método en este necesitamos pasar la zona Id como un parámetro por defecto que podemos usar
  • Por último, lo convertiremos en un objeto LocalDate utilizando el método.

Sintaxis:

date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()

Java

// Java program to convert java.util.Date to
// java.time.LocalDate
//  Using Instance and ZonedDateTime
  
import java.io.*;
import java.time.*;
import java.util.Date;
  
class GFG {
    public static void main(String[] args)
    {
  
        // first create date object
        Date current = new Date();
  
        // first convert the date object to instant using
        // toInstant() then add zoneId using .atZone() at
        // last convert into localDate using toLocalDate()
  
        LocalDate local = current.toInstant()
                  .atZone(ZoneId.systemDefault())
                  .toLocalDate();
  
        // printing the local date object
        System.out.println(local);
    }
}
Producción

2020-12-21

Método 2: Usar Instant y Date.getTime()

Este enfoque es casi similar al primero, la única diferencia será la forma en que se creará el objeto instantáneo.

  • Aquí usaremos el método, toma la fecha como argumento. 
  • Después de eso, nuevamente usaremos el método para agregar el ZoneId seguido del método para obtener el objeto LocalDate.

Sintaxis:

Instant.ofEpochMilli(date.getTime()) .atZone(ZoneId.systemDefault()).toLocalDate()

Java

// Java program to convert java.util.Date to
// java.time.LocalDate
// Using Instant and Date.getTime()
  
import java.io.*;
import java.time.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
  
        // first create date object
        Date current = new Date();
  
        // first create instant object using
        // Instant.ofEpochMilli(date.getTime()) than add
        // zoneId using .atZone() at last convert into
        // localDate using toLocalDate()
        LocalDate local = Instant.ofEpochMilli(current.getTime())
                  .atZone(ZoneId.systemDefault())
                  .toLocalDate();
  
        // printing the local date object
        System.out.println(local);
    }
}
Producción

2020-12-21

Método 3: Usar ofInstant() y ZoneId.systemDefault()

  • Es el enfoque más fácil, usaremos el método de Java 9 de la clase LocalDate, toma dos parámetros. 
  • Un primer parámetro es un objeto instantáneo de fecha y el segundo es ZoneId. 
  • Aquí, en el primer argumento, usaremos el método para obtener el objeto instantáneo y para el segundo argumento usaremos

Sintaxis

LocalDate.ofInstant(date.toInstant(), ZoneId.systemDefault());

Java

// Java program to convert java.util.Date to
// java.time.LocalDate
//  Using ofInstant() and ZoneId.systemDefault()
  
import java.io.*;
import java.time.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
  
        // first create date object
        Date current = new Date();
  
        // use ofInstant method of LocalDate class
        // pass instant object and zone id as parameters
  
        LocalDate local = LocalDate.ofInstant(
            current.toInstant(), ZoneId.systemDefault());
  
        // printing the local date object
        System.out.println(local);
    }
}
Producción

2020-12-21

Publicación traducida automáticamente

Artículo escrito por rajatagrawal5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *