Convertir cadena a LocalDate en Java

Mohammad Irfan 12 octubre 2023
  1. Convierta String a LocalDate usando el método parse() en Java
  2. Convierta String a LocalDate usando el método parse() y ofPattern() en Java
  3. Convierta la fecha de cadena que tiene un mes como nombre de cadena en Java
  4. Convierta la fecha de cadena que tiene día y mes como nombre de cadena en Java
  5. Convertir una cadena de fecha con hora a LocalDate en Java
  6. Conclusión
Convertir cadena a LocalDate en Java

Este tutorial presenta la conversión de String a LocalDate con ejemplos en Java.

LocalDate es una clase en Java, que nos ayuda a representar la fecha local. El formato en el que se representa la fecha es yyyy-mm-dd.

A veces, podemos querer convertir un String en LocalDate para usar las funciones proporcionadas por la clase LocalDate. En este tutorial, veremos varias formas en las que podemos convertir String a LocalDate.

La fecha se puede representar en muchos formatos; necesitamos crear una instancia de formateador. Podemos crear un formateador usando la clase DateTimeFormatter.

Luego pasamos la instancia del formateador al método LocalDate.parse(). El método LocalDate.parse() arroja DateTimeParseException si la cadena pasada no se puede analizar.

Tenga en cuenta que analizar es igual a convertir String a la fecha, y formatear significa convertir la fecha a String en Java.

Convierta String a LocalDate usando el método parse() en Java

Si la fecha está en formato ISO Local Date (yyyy-mm-dd), no necesitamos configurar el formato. Podemos analizar directamente el String al método parse() que devuelve la fecha local.

Vea el ejemplo a continuación.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "2021-12-21";
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date);
    System.out.println(local_date);
  }
}

Producción :

2021-12-21

Convierta String a LocalDate usando el método parse() y ofPattern() en Java

Si la fecha de la cadena no está en formato ISO, debemos convertir su formato usando el método DateTimeFormatter.ofPattern() y luego llamar al método parse() pasando el tipo de formato como argumento.

Vea el ejemplo a continuación.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21/12/2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

2021-12-21

Convierta la fecha de cadena que tiene un mes como nombre de cadena en Java

Si la fecha de la cadena tiene un nombre de mes en letras como Jan, Feb, Mar, etc., entonces necesitamos usar el método ofPattern() con el argumento MMM, que funciona solo sin errores si la configuración regional predeterminada es Locale.English o Locale.US.

En otras palabras, la configuración regional debe comprender el idioma en el que está escrito el mes para analizar la cadena. Un lugar es un objeto que representa una región geográfica, política o cultural específica.

Mira el código de abajo.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21-Dec-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

2021-12-21

Tenga en cuenta que el formato anterior distingue entre mayúsculas y minúsculas. Obtendremos una excepción si escribimos dec en lugar de Dec.

Vea el ejemplo a continuación.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21-dec-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

Exception in thread "main" java.time.format.DateTimeParseException: Text '21-dec-2021' could not be parsed at index 3
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
    at java.base/java.time.LocalDate.parse(LocalDate.java:430)
    at SimpleTesting.main(SimpleTesting.java:8)

Ahora cambiemos la configuración regional predeterminada a otro país que no entienda inglés, como China. Hacemos esto usando el método Locale.setDefault() y pasando la configuración regional requerida como argumento, en este caso, Locale.CHINESE.

Mira el código de abajo.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    Locale.setDefault(Locale.CHINESE); // setting locale as chinese
    String JE_date = "21-Dec-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

Exception in thread "main" java.time.format.DateTimeParseException: Text '21-Dec-2021' could not be parsed at index 3
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
    at java.base/java.time.LocalDate.parse(LocalDate.java:430)
    at SimpleTesting.main(SimpleTesting.java:10)

En el código anterior, recibimos un error porque la configuración regional china no entiende el inglés y, por lo tanto, no puede entender el nombre del mes. Supongamos que nuestra cadena está en francés: 21-mai-2021, luego, para convertir esto en una fecha, debemos pasar Locale.FRANCE como argumento en el método ofPattern().

Vea el ejemplo a continuación.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "21-mai-2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.FRANCE);
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

2021-05-21

Entonces, para evitar excepciones, pase Locale.US como argumento cuando la fecha contenga palabras en inglés.

Convierta la fecha de cadena que tiene día y mes como nombre de cadena en Java

La fecha de la cadena puede contener el nombre del día y el mes como abreviatura en inglés, como martes, 21 de diciembre de 2021. Para convertir esta fecha a una fecha local, al igual que en el caso anterior, podemos convertir fácilmente este formato utilizando el método ofPattern().

Vea el ejemplo a continuación.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "Tue, Dec 21 2021";
    DateTimeFormatter JEFormatter = DateTimeFormatter.ofPattern("E, MMM d yyyy", Locale.US);
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

2021-12-21

Tenga en cuenta que hemos pasado Locale.US como argumento en el método ofPattern(). Es para evitar una excepción si la configuración regional predeterminada no es el inglés.

Convertir una cadena de fecha con hora a LocalDate en Java

La fecha de cadena también puede tener tiempo con la fecha como Tuesday, Dec 21, 2021, 10:30:15 PM. Para convertir esta fecha, primero debemos establecer el formato en el método ofPattern() y luego usar el método parse() para obtener la fecha local.

Vea el ejemplo a continuación.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class SimpleTesting {
  public static void main(String args[]) {
    String JE_date = "Tuesday, Dec 21, 2021 10:30:15 PM";
    DateTimeFormatter JEFormatter =
        DateTimeFormatter.ofPattern("EEEE, MMM d, yyyy hh:mm:ss a", Locale.US);
    // parsing the string to convert it into date
    LocalDate local_date = LocalDate.parse(JE_date, JEFormatter);
    System.out.println(local_date);
  }
}

Producción :

2021-12-21

Conclusión

Este tutorial discutió la conversión de String a LocalDate en Java. Además de los formatos mencionados anteriormente, se pueden usar varios otros formatos para obtener la fecha.

Artículo relacionado - Java Date

Artículo relacionado - Java String