2011-01-12 30 views
2

我試圖使用的SimpleDateFormat類來分析一個DateTime出這個字符串:爲什麼這個代碼生成錯誤:「無法解析的日期」

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

我試過如下格式的字符串:

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); 
} 

但它產生的錯誤:

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

所以我試圖消除考試的括號內的端部ple字符串:

String example = "Sun Jan 09 2011 22:00:00 GMT+0000"; 

但它會產生相同的錯誤。

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" 

有關如何解決此問題的任何提示?

回答

0

認爲的問題是,z修飾符不能解析GMT+0000。根據the Javadoc describing what z parses,格式類似於GMT + HH:MM,而不是GMT + HHMM。如果要分析你有什麼,你可能希望你的格式字符串從

E M d y H:m:s z 

改變

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

您還需要使用「MMM」如果你想解析文本個月。從的javadoc:

「月:如果有一個模式字母的數量爲3個或更多,當月被解釋爲文本;否則,它被解釋爲一個數字」

2

您應該使用(或Z只爲最後一部分):

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

'EE MMM dŸH:M:S「GMT'z'爲我工作。 – mleonard

相關問題