Percy

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

java

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

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:无法解析的日期:“ 2013年10月16日星期三00:00:00 CEST”

好的,我更改为并工作:

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

阅读 2403

收藏
2020-12-08

共2个答案

一尘不染

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

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

一个合适的波兰日期String可能是这样的

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

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

2020-12-08
一尘不染

该日期类主要是过时了,所以我建议不要使用。

也许考虑使用类似于ZonedDateTime类的方法来解决您的问题。

如果您只需要等待5个小时String,就可以使用以下方法:

String time = "Fri Jun 22 09:29:29 NPT 2018";
DateTimeFormatter format = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz uuuu");
ZonedDateTime zdt = ZonedDateTime.parse(time, format);
System.out.println(zdt.minusHours(5));
2020-12-08