Datentypen LocalDate.parse() ergibt Fehler

darkwall

Aktives Mitglied
Hi liebes Forum!

Eigentlich bin ich recht gut in Java und programmiere auch schon lange, aber jetzt stehe ich voll auf dem Schlauch!
Ein Code, der bisher immer reibungslos funktioniert hat, geht nun nicht mehr.
Rahmenbedingungen: Getestet mit Java 16 und 18.
Folgendes Problem: Ich will zwei Datumsangaben, die ich als String erhalte, in ein LocalDate umwandeln. Eigentlich kein großes Dinge seit Java 8, aber es geht plötzlich nicht mehr. Hier der Code:
Java:
String tag1 = "Mi., 12.04.2012";
String tag2 = "Mo., 02.06.2012";
String pattern = "EE'., 'dd'.'MM'.'yyyy";       
java.time.LocalDate ldate1 = null, ldate2 = null;
try {
  DateTimeFormatter ofPattern = java.time.format.DateTimeFormatter.ofPattern(pattern, Locale.GERMAN);       
  ldate1 = java.time.LocalDate.parse(tag1, ofPattern);
  ldate2 = java.time.LocalDate.parse(tag2, ofPattern);
} catch (java.time.format.DateTimeParseException ex) {           
}
Der Fehler passiert in Zeile 7:
Text 'Mi., 12.04.2012' could not be parsed at index 3

Ich sehe den Fehler nicht. Bisher ging es auch. Bin ich blind?

Viele Grüße und Dank!
 

httpdigest

Top Contributor
Bei der Kurzschreibweise des Day of Week (also "Mo." bzw. "Mi".) scheint im Format-Zeichen dafür der Punkt "." bereits eingerechnet zu sein.
Verwende also das Format: "EE', 'dd'.'MM'.'yyyy" (ohne den Punkt hinter EE).
Anschließend wirst du noch einen anderen Fehler bekommen, dass nämlich laut Kalender der 12.04.2012 gar kein Mittwoch war, sondern ein Donnerstag. :)
 

darkwall

Aktives Mitglied
Bei der Kurzschreibweise des Day of Week (also "Mo." bzw. "Mi".) scheint im Format-Zeichen dafür der Punkt "." bereits eingerechnet zu sein.
Verwende also das Format: "EE', 'dd'.'MM'.'yyyy" (ohne den Punkt hinter EE).
Anschließend wirst du noch einen anderen Fehler bekommen, dass nämlich laut Kalender der 12.04.2012 gar kein Mittwoch war, sondern ein Donnerstag. :)
Hey! Besten Dank! Das war der Fehler.
Frage mich nur, warum dieser Code in verschiedenen Projekten bis heute morgen funktioniert hat und auf einmal nicht mehr. Aber wer weiß das schon.

1000 Dank! :)
 

darkwall

Aktives Mitglied
Nachtrag:
Es tritt ein seltsames Phänomen auf. Ich habe das Programm bzw. die Methode unter Linux so geschrieben, wie es @httpdigest vorgeschlagen hat. Es funktioniert alles. Kopiere ich das Projekt auf Windows funktioniert auch alles, sofern ich es aus der IDE (Netbeans) heraus startet. Mache ich daraus aber ein Appimage (mit jpackage) tritt wieder der parse-Fehler auf (unter Linux als Appimage nicht). Seltsam.
Sowohl unter Linux als auch Windows nutze ich das JDK 18.
Was kann hier noch falsch sein? Ich bin mehr als ratlos.
 

LimDul

Top Contributor
Unter Java 11 geht es bei mir nur mit dem Vorschlag von @httpdigest unter Windows 10.

Nachdem ich mal aus Neugierde im JDK geschaut habe, glaube ich das die Darstellung der Tage unter Umständen vom OS kommt - was das unterschiedliche Verhalten erklären würde.

Du könntest auf den Systemen mal den umgekehrten Weg gehen und schauen, was rauskommt, wenn du ein Datum formatierst, ob da auch mal der Punkt da ist und mal nicht.

Lösungsvorschlag ist jetzt hässlich - das Pattern 2x anlegen - einmal mit Punkt und einmal ohne schauen welches beim parsen ohne Exception passt ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Stream und LocalDate Java Basics - Anfänger-Themen 15
MiMa Date vs LocalDate/LocalDateTime Java Basics - Anfänger-Themen 13
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
I JAX-RS LocalDate / LocalTime? Java Basics - Anfänger-Themen 5
T LocalDate to String Java Basics - Anfänger-Themen 1
B JAXB und LocalTime / LocalDate / LocalDateTime Java Basics - Anfänger-Themen 1
G convert Date to LocalDate Java Basics - Anfänger-Themen 11
G convert Optional<Date> into Optional<LocalDate> Java Basics - Anfänger-Themen 6
M Datentypen LocalDate.of() in LocalDate.of() (UTC) Java Basics - Anfänger-Themen 1
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
N Mit LocalDate alter berechnen Java Basics - Anfänger-Themen 3
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
A Datums-Differenzen mit LocalDate (Java 8) - Seltsame Differenzwerte Java Basics - Anfänger-Themen 2
T Frage zu Parse Java Basics - Anfänger-Themen 2
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
N Parse Java Basics - Anfänger-Themen 2
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
Spin Java parse String to int Java Basics - Anfänger-Themen 2
D Datentypen Parse float[] to int[] Java Basics - Anfänger-Themen 4
U Parse Java Basics - Anfänger-Themen 13
H Einfaches Date-parse problem Java Basics - Anfänger-Themen 2
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
SpaceCookie Warum ergibt 5,0 minus 4,9 nicht 0,1? Java Basics - Anfänger-Themen 12
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
E Was ergibt trim() auf einen leeren String Java Basics - Anfänger-Themen 3
S string index out of range - es ergibt keinen Sinn Java Basics - Anfänger-Themen 6
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
K Schnitt zweier Ebenen ergibt Gerade Java Basics - Anfänger-Themen 10
E Client ergibt NULL? Java Basics - Anfänger-Themen 24
M Variablen Zinseszinsberechnung - Variable ergibt keinen Sinn Java Basics - Anfänger-Themen 15
D Problem mit Nachkommastellen <%=Double.valueOf(35/1000)%> ergibt 0.0? Java Basics - Anfänger-Themen 3
2 double multipliziert mit int ergibt Rundungsfehler Java Basics - Anfänger-Themen 5
B Division ergibt null Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben