Beheben Sie die Java.Text.ParseException: Unparseable Date Error in Java

Sheeraz Gul 12 Oktober 2023
Beheben Sie die Java.Text.ParseException: Unparseable Date Error in Java

Dieses Tutorial demonstriert den Fehler java.text.ParseException: Unparseable date in Java.

Beheben Sie den Fehler java.text.ParseException: Unparseable date in Java

Der Fehler java.text.ParseException: Unparseable date tritt normalerweise bei der Verwendung der Klasse SimpleDateFormat in Java auf. Diese Klasse wird verwendet, um das Datum in Java zu formatieren.

Meistens tritt der Fehler java.text.ParseException: Unparseable date auf, wenn wir versuchen, den String date in ein anderes gewünschtes Datumsformat zu konvertieren. Es gibt hauptsächlich drei Probleme mit der Datumszeichenfolge, die diesen Fehler verursachen:

Bei Verwendung des falschen Datumsformats

Das Datumsformat ist sehr wichtig beim Analysieren des Datums in das gewünschte Format. Beim Datum wird in Java zwischen Groß- und Kleinschreibung unterschieden, daher sollten alle Elemente in Groß- und Kleinschreibung korrekt sein.

Die folgende Tabelle zeigt die korrekte Syntax für jedes Datumselement:

Name Syntax
Day dd
Month MM
Year yyyy
Hour HH
Minute mm
Second ss

Gemäß der obigen Tabelle lautet das korrekte Datumsformat in Java:

SimpleDateFormat DemoDateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");

Bei Verwendung der falschen Lokalisierung

Die Lokalisierung ist ein weiterer wichtiger Faktor beim Schreiben des Datums in Java. Wenn wir das Datum in ein englisches Gebietsschema einfügen und versuchen, es auf einem anderen System zu parsen, das nicht englisch ist, wird der Fehler java.text.ParseException: Unparseable date ausgegeben.

Wir müssen das Gebietsschema im Datumsformat angeben, damit die Daten auf anderen Systemen problemlos analysiert werden können. Denn wenn wir nichts angeben, verwendet die JVM das Standardgebietsschema.

Hier ist das Beispiel für die Locale-Syntax:

SimpleDateFormat DemoDateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss", Locale.English);

Bei Verwendung der falschen Zeitzone

Die Verwendung der richtigen Zeitzone ist auch beim Schreiben des Datumsformats in Java wichtig. Die Klasse SimpleDateFormat ist so programmiert, dass sie die Standardzeitzone, die aktuelle Zeitzone der JVM, verwendet, wenn sie nicht im Format angegeben ist.

Die JVM-Zeitzone kann sich je nach Standort des Benutzers ändern. Wenn wir also in diesem Fall die Zeitzone nicht festlegen, tritt ein Fehler wie falsches Format oder unerwarteter Fehler auf.

Hier ist die Syntax zum Festlegen der Zeitzone in Java:

DemoDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

Versuchen wir ein Beispiel, das den Fehler java.text.ParseException: Unparseable date in Java auslöst:

package delftstack;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Example {
  public static void main(String[] arg) throws ParseException {
    String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
    SimpleDateFormat Simple_Date_Format = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
    Date Current_Date;
    Current_Date = Simple_Date_Format.parse(DemoDate);
    System.out.println(Current_Date);
  }
}

Das Datumsmuster im obigen Code entspricht nicht der Eingabezeichenfolge, deshalb wird der folgende Fehler ausgegeben:

Exception in thread "main" java.text.ParseException: Unparseable date: "Tue Aug 16 12:30:10 IST 2022"
    at java.base/java.text.DateFormat.parse(DateFormat.java:399)
    at delftstack.Example.main(Example.java:13)

Die Lösung mit dem richtigen Datumsformat gemäß der angegebenen Zeichenfolge lautet:

package delftstack;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Example {
  public static void main(String[] arg) throws ParseException {
    String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
    SimpleDateFormat Simple_Date_Format =
        new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
    Date Current_Date;
    Current_Date = Simple_Date_Format.parse(DemoDate);
    System.out.println(Current_Date);
  }
}

Die Ausgabe für den Code ist:

Tue Aug 16 15:30:10 PKT 2022

Wenn die angegebene Ausgabe nicht gut aussieht, können wir ein weiteres SimpleDateFormat hinzufügen und das Current_Date nach unserer Wahl formatieren. Siehe Beispiel:

package delftstack;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Example {
  public static void main(String[] arg) throws ParseException {
    String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
    SimpleDateFormat Simple_Date_Format =
        new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
    Date Current_Date;
    Current_Date = Simple_Date_Format.parse(DemoDate);

    SimpleDateFormat Print_Date = new SimpleDateFormat("EE MMM d, yyyy HH:mm:ss");
    System.out.println(Print_Date.format(Current_Date));
  }
}

Der obige Code druckt das Datum in einem leichter lesbaren Format. Siehe Ausgabe:

Tue Aug 16, 2022 15:30:10
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Error