2011-01-12 11 views
2

Ich versuche, die Simple Klasse zu verwenden, um eine Datetime aus dieser Zeichenfolge zu analysieren:Warum generiert dieser Code den Fehler: „unparseable date“

Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time) 

ich folgendes Format-String versucht:

String example = "Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)"; 
SimpleDateFormat formatter = new SimpleDateFormat("E M d y H:m:s z"); 
try 
{ 
    Date exampleDate = formatter.parse(example); 
    LOGGER.warn(exampleDate.toString()); 
} 
catch(Exception e) 
{ 
    LOGGER.warn(e.getMessage(), e); 
} 

Aber es erzeugt den Fehler:

Unparseable date: "Mon Jan 10 2011 01:15:00 GMT+0000 (GMT Standard Time)" 

Also versuchte ich den geklammerten Ende Teil der Prüfung zu entfernen ple Zeichenfolge:

Aber es erzeugt den gleichen Fehler.

WARNING: Unparseable date: "Sun Jan 09 2011 22:00:00 GMT+0000" 
java.text.ParseException: Unparseable date: "Sun Jan 09 2011 22:00:00 GMT+0000" 

Gibt es Hinweise, wie Sie das umgehen können?

Antwort

0

ich denke, dass das Problem ist, dass der z Modifikator nicht GMT+0000 analysieren kann. Laut the Javadoc describing what z parses ist das Format etwas wie GMT + HH: MM, anstatt GMT + HHMM. Wenn Sie analysieren wollen, was Sie haben, möchten Sie wahrscheinlich Ihre Format-String aus

E M d y H:m:s z 

zu

E M d y H:m:s 'G'M'Tz 
1

Sie auch verwenden müssen sich ändern „MMM“, wenn Sie Text Monate analysieren möchten. Aus den Javadocs:

"Monat: Wenn die Anzahl der Musterbuchstaben 3 oder mehr ist, wird der Monat als Text interpretiert; andernfalls wird er als Zahl interpretiert."

2

sollten Sie verwenden (oder Z nur für den letzten Teil):

E MMM dd yyyy HH:mm:ss zZ 
+0

'EE MMM d y H: m: s‚GMT'z' für mich gearbeitet. – mleonard

Verwandte Themen