Convertir une chaîne en LocalDate en Java

Mohammad Irfan 12 octobre 2023
  1. Convertir une chaîne en LocalDate à l’aide de la méthode parse() en Java
  2. Convertir une chaîne en LocalDate à l’aide des méthodes parse() et ofPattern() en Java
  3. Convertir la date de chaîne qui a un mois en tant que nom de chaîne en Java
  4. Convertir la date de chaîne qui a le jour et le mois en tant que nom de chaîne en Java
  5. Convertir la date de chaîne qui a l’heure en LocalDate en Java
  6. Conclusion
Convertir une chaîne en LocalDate en Java

Ce tutoriel présente la conversion de String en LocalDate avec des exemples en Java.

LocalDate est une classe en Java, qui nous aide à représenter la date locale. Le format dans lequel la date est représentée est aaaa-mm-jj.

Parfois, on peut vouloir convertir une String en LocalDate pour utiliser les fonctions fournies par la classe LocalDate. Dans ce tutoriel, nous verrons différentes manières de convertir String en LocalDate.

La date peut être représentée dans de nombreux formats ; nous devons créer une instance de formateur. Nous pouvons créer un formateur en utilisant la classe DateTimeFormatter.

Nous passons ensuite l’instance du formateur dans la méthode LocalDate.parse(). La méthode LocalDate.parse() lève DateTimeParseException si la chaîne passée n’est pas analysable.

Notez que l’analyse équivaut à convertir String en date, et le formatage signifie convertir la date en String en Java.

Convertir une chaîne en LocalDate à l’aide de la méthode parse() en Java

Si la date est au format ISO Local Date (yyyy-mm-dd), nous n’avons pas besoin de définir le format. Nous pouvons directement analyser la chaîne à la méthode parse() qui renvoie la date locale.

Voir l’exemple ci-dessous.

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

Production :

2021-12-21

Convertir une chaîne en LocalDate à l’aide des méthodes parse() et ofPattern() en Java

Si la date String n’est pas au format ISO, nous devons convertir son format en utilisant la méthode DateTimeFormatter.ofPattern(), puis appeler la méthode parse() en passant le type de format comme argument.

Voir l’exemple ci-dessous.

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

Production :

2021-12-21

Convertir la date de chaîne qui a un mois en tant que nom de chaîne en Java

Si la date String a un nom de mois en lettres comme Jan, Feb, Mar, etc., alors nous devons utiliser la méthode ofPattern() avec l’argument MMM, qui fonctionne sans erreur uniquement si la locale par défaut est soit Locale.English soit Locale.US.

En d’autres termes, les paramètres régionaux doivent comprendre la langue dans laquelle le mois est écrit pour analyser la chaîne. Un paramètre régional est un objet qui représente une région géographique, politique ou culturelle spécifique.

Regardez le code ci-dessous.

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

Production :

2021-12-21

Notez que le format ci-dessus est sensible à la casse. Nous aurons une exception si nous écrivons dec au lieu de Dec.

Voir l’exemple ci-dessous.

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

Production :

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)

Changeons maintenant les paramètres régionaux par défaut pour un autre pays qui ne comprend pas l’anglais, comme la Chine. Pour ce faire, nous utilisons la méthode Locale.setDefault() et transmettons la locale requise en tant qu’argument, dans ce cas, Locale.CHINESE.

Regardez le code ci-dessous.

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

Production :

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)

Dans le code ci-dessus, nous obtenons une erreur car les paramètres régionaux chinois ne comprennent pas l’anglais et ne peuvent donc pas comprendre le nom du mois. Supposons que notre String soit en français : 21-mai-2021, alors pour le convertir en date, il faut passer Locale.FRANCE en argument dans la méthode ofPattern().

Voir l’exemple ci-dessous.

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

Production :

2021-05-21

Ainsi, pour éviter les exceptions, passez Locale.US en argument lorsque la date contient des mots anglais.

Convertir la date de chaîne qui a le jour et le mois en tant que nom de chaîne en Java

La date de chaîne peut contenir le nom du jour et du mois sous forme d’abréviation anglaise telle que Tue, Dec 21, 2021. Pour convertir cette date en date locale, tout comme dans le cas précédent, nous pouvons facilement convertir ce format en utilisant la méthode ofPattern().

Voir l’exemple ci-dessous.

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

Production :

2021-12-21

Remarquez, nous avons passé Locale.US comme argument dans la méthode ofPattern(). C’est pour empêcher une exception si la locale par défaut n’est pas l’anglais.

Convertir la date de chaîne qui a l’heure en LocalDate en Java

La date de chaîne peut également avoir l’heure avec la date comme Tuesday, Dec 21, 2021, 10:30:15 PM. Pour convertir cette date, nous devons d’abord définir le format dans la méthode ofPattern(), puis utiliser la méthode parse() pour obtenir la date locale.

Voir l’exemple ci-dessous.

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

Production :

2021-12-21

Conclusion

Ce tutoriel a discuté de la conversion de String en LocalDate en Java. Outre les formats mentionnés ci-dessus, plusieurs autres formats peuvent être utilisés pour obtenir la date.

Article connexe - Java Date

Article connexe - Java String