2012-03-29 7 views
0

Ich habe eine Zeichenfolge (ex: 2012-30-03 12:30), und ich versuche, den folgenden Code zu verwenden:Warum wird "2012-30-03" als 3. Juni 2014 mit DateFormat geparst?

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
this.startTime = (Date) df.parse(startTime); // startTime = "2012-30-03 12:30" 

Aber wenn ich versuche folgendes:

System.out.println(this.startTime); 

Im folgenden erhalten

gedruckt

Di 3. Juni 12.30.00 CEST 2014

Was zum Teufel ist hier falsch?

Gibt es eine bessere Möglichkeit, die Art der Zeichenfolge, die ich habe, in ein Arbeitsdatenobjekt umzuwandeln?

+2

So ziemlich auf der ganzen Linie verwende ich joda Zeit: http://joda-time.sourceforge.net/ – robertvoliva

+3

Zwar gibt es wohl eine Ausnahme ausgelöst werden soll, ist es „technisch korrekt“ ist, wenn man geht ** * 30 Monate ** und ** 3 Tage ** nach 2012 *. Bitte versuchen Sie in jedem Fall, Fragen in einer objektiveren Form zu formulieren. –

+2

Das Datum richtig notieren - wie geht das? – trutheality

Antwort

9

Ich denke

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");

DateFormat df = new SimpleDateFormat("yyyy-dd-MM HH:mm");

am Beispiel String sein, sollten Sie zur Verfügung gestellt (2012-30-03 12:30).

Konzentrieren Sie Ihre Wut gegen die Datumsklasse in die Überprüfung der Grundlagen und Sie werden in Ordnung sein. ;)

+1

Es ist wahrscheinlich die Beispielzeichenfolge, die falsch ist. Niemand verwendet ein Jahr-Tag-Monat-Format. Es ist entweder Jahr-Monat-Tag, Monat-Tag-Jahr oder Tag-Monat-Jahr. – trutheality

+0

möglicherweise, aber ich kann nur anhand der Informationen wie beschrieben diagnostizieren. Außerdem habe ich seltsame Dinge in Software gesehen, die nicht ein Standard-Datumsformat ist. – hvgotcodes

+0

Haha, omg ... mein böser: P –