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

问题描述 投票:10回答:3

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

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

take: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");
java date simpledateformat
3个回答
16
投票

因为你似乎在波兰,我会假设你的Locale.getDefault()pl-PL

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

适当的波兰日期String会是这样的

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

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


8
投票

您可以通过使用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

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

希望这有帮助:)


4
投票

我认为最初的例外是由于你的格式的documentation。每Z Time zone RFC 822 time zone -0800

z

很可能你打算使用小写qazxswpoi

© www.soinside.com 2019 - 2024. All rights reserved.