SimpleDateFormat Wochentag Monat

af99

Mitglied
Hallo Zusammen,

ich bin neu hier und möchte mich im Voraus schon mal für Eure Hilfe bedanken.
Das Problem ist das ich ein Datum mit dem Wochentag und dem Monatsnamen nicht parsen kann.
Java:
package Datum;

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

public class Datum_zerlegen {

    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'CEST' yyyy");
    
        String datum = "Mon Jan 13 12:40:04 CEST 2022";
        
        try {
            Date d = sdf.parse(datum);
            System.out.println("Datum: " + d);
            
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Ich bekomme vom Eclipse immer die Meldung
"java.text.ParseException: Unparseable date: "Mon Jan 13 12:40:04 CEST 2022"
at java.base/java.text.DateFormat.parse(DateFormat.java:396)
at Datum.Datum_zerlegen.main(Datum_zerlegen.java:15)"

Wenn ich aber SimpleDateFormat sdf = new SimpleDateFormat("dd HH:mm:ss 'CEST' yyyy"); und String datum = "13 12:40:04 CEST 2022"; nehme dann klappts.

Was mache ich falsch?

Gruß Andreas
 

Robert Zenz

Top Contributor
Als Gegenprobe kannst du in solchen Faellen dir immer ein Datum formatieren lassen:

Java:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'CEST' yyyy");
        
System.out.println(sdf.format(new Date()));

Ergibt:

Code:
Mi Mär 09 11:19:58 CEST 2022

Und wir sehen, das Locale fuer Deutschland verwendet nur zweistellige Tagenamen fuer EEE. Als simple Loesung muesste es gehen einfach EEEE zu verwenden, oder du leitest dir eine Locale ab welche dreistellige Tagesnamen verwendet.

Ich glaube es gibt noch eine Loesung, die faellt mir aber gerade nicht ein.
 

mihe7

Top Contributor
Java:
new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US)
        .parse("Mon Jan 10 12:10:05 CEST 2022")
funktioniert.
 

Robert Zenz

Top Contributor
Java:
new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US)
        .parse("Mon Jan 10 12:10:05 CEST 2022")
funktioniert.

Durch Zufall, weil "Mon" und "Jan" sich mit den englischen Bezeichnungen decken und das englische Locale dreistellige Tagesnamen verwendet. Also angenommen das Datum soll Deutsch sein.
 

af99

Mitglied
Hallo Robert und mihe7,

super vielen Dank. hat geklappt. Das ist meine Lösung , Locale.US

@Robert Das Datum einfach nochmal auszugeben ist eine gute Idee. Heisst Dein "durch Zufall" das es bei anderen Monaten oder Tagen nicht klappen könnte?
 

af99

Mitglied
nee ich bekomme das Datum immer in diesem Format "Mon Jan 10 12:10:05 CEST 2022" also mit englischer Bezeichnung für den Wochentag und den Monat geliefert.
 

mihe7

Top Contributor
Durch Zufall, weil "Mon" und "Jan" sich mit den englischen Bezeichnungen decken und das englische Locale dreistellige Tagesnamen verwendet. Also angenommen das Datum soll Deutsch sein.
Naja, was heißt Zufall? CEST ist Englisch, EEE auf Deutsch führt ja zu Mi. und nicht zu Mit usw. -> ich sehe hier ein englisch geschriebenes Datum.
 

Oneixee5

Top Contributor
Mal eine dumme Frage: CEST steht für "Central European Summer Time" - irgend etwas muss ich da übersehen. Wie kommt ihr auf Locale.US? Was ist da der Zusammenhang?
 

Robert Zenz

Top Contributor
Naja, was heißt Zufall? CEST ist Englisch, EEE auf Deutsch führt ja zu Mi. und nicht zu Mit usw. -> ich sehe hier ein englisch geschriebenes Datum.

Mein Gedankengang war das ich nicht weisz woher das Datum kommt, vermutlich eher aus einer externen Quelle wie einer Datei, und ich war mir nicht sicher ob "CEST" lokalisiert wird oder nicht.
 

mihe7

Top Contributor
Mal eine dumme Frage: CEST steht für "Central European Summer Time" - irgend etwas muss ich da übersehen. Wie kommt ihr auf Locale.US? Was ist da der Zusammenhang?
Ja, das dürfte in GB genauso heißen :) Keine Ahnung, ob es zwischen US und GB hier noch Unterschiede gibt (Abkürzung der Wochentage evtl.) Ich wäre jetzt davon ausgegangen, dass es in der DE-Locale MESZ heißen müsste.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B SimpleDateFormat oder doch lieber GregorianCalendar Allgemeine Java-Themen 3
L Validierung einer Zeichenkette für SimpleDateFormat Allgemeine Java-Themen 10
E SimpleDateFormat-Konvertierung funktioniert nicht Allgemeine Java-Themen 3
Grejak Date und SimpleDateFormat Allgemeine Java-Themen 6
R SimpleDateFormat Allgemeine Java-Themen 8
K SimpleDateFormat Fehler Allgemeine Java-Themen 3
T SimpleDateFormat.parse() liefert falschen Tag Allgemeine Java-Themen 2
D Klassen Zeit aus NMEA-Stream in SimpleDateFormat Allgemeine Java-Themen 17
N SimpleDateFormat: Unparseable date Allgemeine Java-Themen 5
G SimpleDateFormat Allgemeine Java-Themen 7
G SimpleDateFormat Allgemeine Java-Themen 10
H2SO3- String(pattern) von SimpleDateFormat auslesen Allgemeine Java-Themen 7
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
I SimpleDateFormat Allgemeine Java-Themen 8
P SimpleDateFormat/Date Allgemeine Java-Themen 4
RaoulDuke Problem mit SimpleDateFormat Allgemeine Java-Themen 4
E XML dateTime String in Date mit SimpleDateFormat umwandeln Allgemeine Java-Themen 5
B SimpleDateFormat fehler? Allgemeine Java-Themen 2
thE_29 SimpleDateFormat ? Allgemeine Java-Themen 14
G SimpleDateFormat Allgemeine Java-Themen 5
G SimpleDateFormat und Locale Allgemeine Java-Themen 10
N Problem mit SimpleDateFormat Allgemeine Java-Themen 14
E GregorianCalendar Wochentag Allgemeine Java-Themen 3
I Wochentag von int nach String auflösen Allgemeine Java-Themen 2
T KW=1 Jahr=2008 Monat=Dezember => GregorianCalendar Allgemeine Java-Themen 8
G Datum um 1 Monat verschoben Allgemeine Java-Themen 3
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
I Mit welchem Tag fängt der Monat an ? Allgemeine Java-Themen 2
G Zum Datum 30 Tage oder 1 Monat hinzufügen Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben