日期格式解析异常 - “EEE MMM dd HH:mm:ss Z yyyy”

时间:2013-11-08 14:38:15

标签: java date simpledateformat

我遇到了日期解析示例日期的问题:

SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault());


parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

得到例外

我希望将此格式日期解析为yyyy-MM-dd 我试试:

SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

采取: java.text.ParseException:Unparseable date:“Wed Oct 16 00:00:00 CEST 2013”​​


好的,我改变并工作:

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

3 个答案:

答案 0 :(得分:16)

我将假设Locale.getDefault()对你来说是pl-PL,因为你似乎在波兰。

日期字符串中的英语单词会导致日期不可解析。

适当的波兰语日期String类似于

"Wt paź 16 00:00:00 -0500 2013"

否则,请将Locale更改为Locale.ENGLISH,以便SimpleDateFormat对象可以使用英语单词解析String个日期。

答案 1 :(得分:6)

您可以使用Locale.default来决定使用locale.ENGLISH而不是使用public static void main(String[] args) { try { SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); System.out.println("date: " + date.toString()); } catch (ParseException ex) { ex.printStackTrace(); } } ,而您和其他人通常不知道哪个默认值,因为我看到您的字符串日期是英文格式。如果您在其他国家/地区,则格式会有所不同。

这是我的示例代码:

date: Wed Oct 16 05:00:00 ICT 2013

结果将是:{{1}}。或者您可以使用其字段决定要打印此日期的哪一部分。

希望这有帮助:)

答案 2 :(得分:4)

我认为最初的异常是由于格式为Z。 每documentation

Z   Time zone   RFC 822 time zone   -0800

很可能您打算使用小写z