Konvertieren String in LocalDate in Java

Mohammad Irfan 12 Oktober 2023
  1. Konvertierung von String in LocalDate mit der Methode parse() in Java
  2. Konvertieren von String in LocalDate mit der parse() und ofPattern() Methode in Java
  3. Konvertieren ein String-Datum mit einem Monat als String-Namen in Java
  4. Konvertierung von Datumsstrings mit Tag und Monat als Stringnamen in Java
  5. Konvertierung von String Datum mit Zeit in LocalDate in Java
  6. Fazit
Konvertieren String in LocalDate in Java

Dieses Tutorial stellt die Konvertierung von String nach LocalDate mit Beispielen in Java vor.

LocalDate ist eine Klasse in Java, die uns hilft, das lokale Datum darzustellen. Das Format, in dem das Datum dargestellt wird, ist yyyy-mm-dd.

Manchmal möchten wir vielleicht einen String in LocalDate umwandeln, um die von der LocalDate-Klasse bereitgestellten Funktionen zu verwenden. In diesem Tutorial werden wir verschiedene Möglichkeiten sehen, wie wir String in LocalDate konvertieren können.

Das Datum kann in vielen Formaten dargestellt werden; Wir müssen eine Formatter-Instanz erstellen. Wir können einen Formatierer erstellen, indem wir die Klasse DateTimeFormatter verwenden.

Anschließend übergeben wir die Formatter-Instanz an die Methode LocalDate.parse(). Die Methode LocalDate.parse() löst DateTimeParseException aus, wenn der übergebene String nicht parsbar ist.

Beachten Sie, dass das Parsen dem Konvertieren von String in ein Datum entspricht und das Formatieren das Konvertieren des Datums in einen String in Java bedeutet.

Konvertierung von String in LocalDate mit der Methode parse() in Java

Wenn das Datum im lokalen ISO-Datumsformat (yyyy-mm-dd) ist, müssen wir das Format nicht festlegen. Wir können den String direkt in die Methode parse() parsen, die das lokale Datum zurückgibt.

Siehe das Beispiel unten.

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

Ausgabe:

2021-12-21

Konvertieren von String in LocalDate mit der parse() und ofPattern() Methode in Java

Wenn das String-Datum nicht im ISO-Format vorliegt, müssen wir sein Format mithilfe der Methode DateTimeFormatter.ofPattern() konvertieren und dann die Methode parse() aufrufen, indem wir den Formattyp als Argument übergeben.

Siehe das Beispiel unten.

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

Ausgabe:

2021-12-21

Konvertieren ein String-Datum mit einem Monat als String-Namen in Java

Wenn das String-Datum einen Monatsnamen in Buchstaben wie Jan, Feb, Mar usw. hat, müssen wir die Methode ofPattern() mit dem Argument MMM verwenden, was nur fehlerfrei funktioniert wenn das Standardgebietsschema entweder Locale.English oder Locale.US ist.

Mit anderen Worten, das Gebietsschema sollte die Sprache verstehen, in der der Monat geschrieben ist, um den String zu analysieren. Ein Gebietsschema ist ein Objekt, das eine bestimmte geografische, politische oder kulturelle Region darstellt.

Sehen Sie sich den Code unten an.

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

Ausgabe:

2021-12-21

Beachten Sie, dass beim obigen Format zwischen Groß- und Kleinschreibung unterschieden wird. Wir bekommen eine Ausnahme, wenn wir dec anstelle von Dec schreiben.

Siehe das Beispiel unten.

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

Ausgabe:

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)

Lassen Sie uns nun das Standardgebietsschema auf ein anderes Land ändern, das kein Englisch versteht, wie China. Wir tun dies, indem wir die Methode Locale.setDefault() verwenden und das erforderliche Gebietsschema als Argument übergeben, in diesem Fall Locale.CHINESE.

Sehen Sie sich den Code unten an.

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

Ausgabe:

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)

Im obigen Code erhalten wir einen Fehler, weil das chinesische Gebietsschema kein Englisch versteht und daher den Monatsnamen nicht verstehen kann. Angenommen, unser String ist auf Französisch: 21-mai-2021, dann müssen wir, um dies in ein Datum umzuwandeln, Locale.FRANCE als Argument in der ofPattern()-Methode übergeben.

Siehe das Beispiel unten.

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

Ausgabe:

2021-05-21

Um Ausnahmen zu vermeiden, übergeben Sie also Locale.US als Argument, wenn das Datum englische Wörter enthält.

Konvertierung von Datumsstrings mit Tag und Monat als Stringnamen in Java

Die Zeichenfolge date kann Tages- und Monatsnamen als englische Abkürzung enthalten, z. B. Tue, Dec 21, 2021. Um dieses Datum wie im vorherigen Fall in ein lokales Datum umzuwandeln, können wir dieses Format einfach mit der Methode ofPattern() konvertieren.

Siehe das Beispiel unten.

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

Ausgabe:

2021-12-21

Beachten Sie, dass wir Locale.US als Argument in der ofPattern()-Methode übergeben haben. Es soll eine Ausnahme verhindern, wenn das Standardgebietsschema nicht Englisch ist.

Konvertierung von String Datum mit Zeit in LocalDate in Java

String-Datum kann auch Zeit mit dem Datum wie Tuesday, Dec 21, 2021, 10:30:15 PM haben. Um dieses Datum zu konvertieren, müssen wir zuerst das Format in der Methode ofPattern() festlegen und dann die Methode parse() verwenden, um das lokale Datum zu erhalten.

Siehe das Beispiel unten.

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

Ausgabe:

2021-12-21

Fazit

In diesem Tutorial wurde die Konvertierung von String in LocalDate in Java besprochen. Abgesehen von den oben besprochenen Formaten können mehrere andere Formate verwendet werden, um das Datum zu erhalten.

Verwandter Artikel - Java Date

Verwandter Artikel - Java String