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

相关问题