Methoden Datum parsen

Kababär

Top Contributor
Hi,

ich habe ein Datum in Form von yyyy-MM-dd und möchte dies nun gerne in dd.MM.yyyy parsen, bekomme aber eine ParseException..

Hier der Code
Code:
    public String modifyDate(String inputDate) throws ParseException {
        String result;
        DateFormat srcDf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = srcDf.parse(inputDate);
       
        DateFormat destDf = new SimpleDateFormat("dd.MM.yyyy");
       
        result = destDf.format(date);
        return result;
    }
Was stimmt hier nicht? :/
 

Thallius

Top Contributor
Ich würde sagen dein InputDate aber wirklichen Aufschluß wird uns wohl nur die Exception geben die du uns ja vorenthälst.

Gruß

Claus
 

Jardcore

Top Contributor
Ich schließe mit Thallius an, du benötigst ein gültiges inputDate... z.B.:
"2003-10-01".

Btw. wozu brauchst du die Variable result? :)
 

Kababär

Top Contributor
Der Stacktrace lautet "unparseable date ...".
Die Variable Result habe ich mir angelegt, damit ich im Debuggen besser sehen kann was mit dem Datum passiert und habe den Übeltäter gefunden.
Mache ich aus "2000-10-10" -> "10.10.2000", dann wendet er das ganze nochmal an, wenn ich das neue Datum nochmal reinstecke.
Problem gelöst indem ich als erstes Frage, ob inputDate schon im Wunschformat ist.


@Jstein: er macht das selbe Objekt daraus, weil die JVM interpretiert. Richtig?
 

Kababär

Top Contributor
In der Tat, weil ich unterwegs war und zufällig nicht mein Projekt und Netbeans auf meinem Handy habe ;)

Problem ist doch gelöst. Wieso rumstänkern? Beziehungsweise: Hauptsache rumstänkern.

Wenn "java.text.ParseException: Unparseable date: ....." da steht, ist das halt die Exception, was soll ich da noch weiter spezifizieren. Dass die Exception wohl in der von mir gegebenen Methode auftritt, ist ja wohl auch einleuchtend..
 

Thallius

Top Contributor
Ich finde nicht das das Problem gelöst ist, wenn du eine Methode, die ein Datum im Format yyyy-MM-dd erwartet mit einem Format von dd.MM.yyyy aufrufst und die Excpetion dann unterdrückst indem du vorher checkst wie das ankommende Format ist. Das ist fuscherei hoch 10.
 

Kababär

Top Contributor
Du nennst es Fuscherei, ich nenne es strikte Einhaltung gewisser Richtlinien. Wenn nur ein Format für ein Datum aktzeptiert wurde (früher) und diese nun auf ein neues Format gebracht werden soll, gibt es auch nur ein Fall. Hat jedoch ein Fuscher ein falsches Format für ein Datum (früher) verwendet, dann funktioniert es halt nicht. (wobei eine Exception wirklich unschön ist)

Also. Es ist ja nur ein kleines Projekt und es gibt nur ein Format. Wenn ein Datum im Format yyyy-MM-dd reinkommt ist alles fein.
Wenn ein Datum im Format dd.MM.yyyy reinkommt, wird eine Exception geworfen. Wieso? Das Datum ist doch korrekt und muss nicht geparst werden. Also Abfrage ob das Datum schon das korrekte Format hat.
Alle anderen Formate werden schlichtweg nicht akzeptiert.

Oder wie würdest du das nun machen, damit es nicht gefuscht ist? Ein Else-Zweig einbauen?

edit: Sorry, das könnte etwas pampig rübergekommen sein :/
 

Thallius

Top Contributor
Wenn das Datum schon das richtige Format besitzt sollte die MEthod gar nicht aufgerufen werden. Wenn sie doch aufgerufen wird, dann ist halt schon vorher was schief gelaufen.

Ausserdem ist ein Datum im Format dd.MM.yyyy nur für eine einzige Anwedung sinvoll. Nämlich wenn du das Datum ausgeben willst und das auch nicht in England oder USA.
Du kannst weder damit rechnen noch vergleichen.
Also sollte die Methode auch entsprechend genannt werden. Also zum Beispiel getDateOutputFormatString() oder sowas.
Weiterhin würde ich in dem Fall mit Locale arbeiten, denn dann hast du das Format für die Ausgabe auch gleich immer in dem Landesspezifischen Format.
 
Zuletzt bearbeitet:

Kababär

Top Contributor
Muss das Datum valide sein, wenn es schon das Zielformat besitzt oder einfach nur im Format sein?
Das Datum ist valide, wenn es im Zielformat ist.

Wenn das Datum schon das richtige Format besitzt sollte die MEthod gar nicht aufgerufen werden. Wenn sie doch aufgerufen wird, dann ist halt schon vorher was schief gelaufen.
Ja, ich könnte vorher schon prüfen, ob das Datum im richtigen Format ist.
Ich habe generell eine große Liste von Daten, die an Objekte gebunden sind und die Daten haben nur das yyyy-MM-dd Format. Deshalb rufe ich diese Methode im getter des Objekts "getDate" auf, damit ich direkt das richtige Datum zurückbekomme und nicht erst immer nachfragen muss, sondern egal wo ich mich im Code befinde, kann ich einfach getDate() aufrufen und bekomme ein korrektes Ergebnis ohne vorher das Format prüfen zu müssen.
Falls sich meine Ansprüche mal erweitern sollten, muss ich logischerweise auch die Methode u.ä. erweitern.

Falls es dann mal so weit ist, werde ich alles in mein eigenes util-package verstauen.

Das mit Local werde ich mir mal ansehen, danke :)
 

Thallius

Top Contributor
In Deinen Objekten solltest Du ein Datum immer als Datum , also Date, LocalDate, LocalDateTime speichern und verwenden. Da hat ein Datum als String nichts verloren. Erst wenn Du das Datum ausgeben willst formatierst du es in das benötigte Format.
 

Kababär

Top Contributor
Gebe ich dir Recht, habe ich nicht dran gedacht.

Glücklicherweise rechne und vergleiche ich die Daten in diesem Projekt nicht. Danke für den Tipp.
 

Flown

Administrator
Mitarbeiter
Also wenn du vorher in deine Methode prüfst, ob es schon im richtigen Format ist (am besten mit Regex), dann gib einfach das zurück und hast das hin- und hergeparse nicht nötig:
Java:
private static final Pattern DATE_PATTERN = Pattern.compile("\\d{2}\\.\\d{2}\\.\\d{4}");
private static final DateFormat SRC_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
private static final DateFormat DST_DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy");

public String modifyDate(String inputDate) throws ParseException {
  if (DATE_PATTERN.matcher(inputDate).matches()) {
    return inputDate;
  } else {
    return DST_DATE_FORMAT.format(SRC_DATE_FORMAT.parse(inputDate));
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
E Datentypen Unvollständiges Datum parsen Java Basics - Anfänger-Themen 8
F Datum AM / PM parsen Java Basics - Anfänger-Themen 5
A Datentypen Datum mit "May" zu Date parsen Java Basics - Anfänger-Themen 6
F Datum parsen Java Basics - Anfänger-Themen 6
M Datum parsen Java Basics - Anfänger-Themen 10
D Datum parsen Java Basics - Anfänger-Themen 11
N Datum parsen Java Basics - Anfänger-Themen 3
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
B String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
I Datum und Uhrzeitpattern von Locale Java Basics - Anfänger-Themen 7
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
P Datum umwandeln Java Basics - Anfänger-Themen 5
A Datum formatieren Java Basics - Anfänger-Themen 6
K Samstag einer Woche anhand eines Datum Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
B Datum ändern? Java Basics - Anfänger-Themen 8
Tally Methoden BlueJ - Datum als Kalendertag int - tagImJahr Java Basics - Anfänger-Themen 6
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
B Differenz von 2 Datum Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
D Hilfe beim SDF Datum Ausgabe Java Basics - Anfänger-Themen 20
A Plausibles Datum Java Basics - Anfänger-Themen 21
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Java Datum berechnen Java Basics - Anfänger-Themen 13
L Datum probleme Java Basics - Anfänger-Themen 6
S Schleife Datum Java Basics - Anfänger-Themen 11
S Datum ändern bzw. abziehen Java Basics - Anfänger-Themen 3
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
K Wie Datum um einen Tag erhöhen? Java Basics - Anfänger-Themen 4
A Datum Prüfen Java Basics - Anfänger-Themen 3
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
E Datum und Uhrzeit von UTC in MET umrechnen Java Basics - Anfänger-Themen 6
E Methoden Datum , Uhrzeit, Nachricht in txt Datei schreiben Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
A Datum formatieren Java Basics - Anfänger-Themen 8
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
M Datum aus einer Textdatei holen Java Basics - Anfänger-Themen 9
M Datum und Stunde als String ausgeben Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben