Why can't this SimpleDateFormat parse this dat

2019-01-19 23:40发布

The SimpleDateFormat:

SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");

The exception thrown by pdf.parse("Mar 30 2010 5:27:40:140PM");:

java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"

Any ideas?


Edit: thanks for the fast answers. You were all correct, I just missed that one key sentence in the SimpleDateFormat docs - I should probably call it a day.

3条回答
beautiful°
2楼-- · 2019-01-20 00:12

From SimpleDateFormat javadocs:

Month: If the number of pattern letters is 3 or more, the month is interpreted as text; otherwise, it is interpreted as a number.

Try to use pattern like "MMM dd yyyy"

查看更多
放荡不羁爱自由
3楼-- · 2019-01-20 00:18

First, three-char months are to be represented by MMM. Second, one-two digit hours are to be represented by h. Third, Mar seems to be English, you'll need to supply a Locale.ENGLISH, else it won't work properly in machines with a different default locale.

The following works:

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy h:mm:ss:SSSa", Locale.ENGLISH);
System.out.println(sdf.parse("Mar 30 2010 5:27:40:140PM"));

Result (I'm at GMT-4 w/o DST):

Tue Mar 30 17:27:40 BOT 2010

Also see the java.text.SimpleDateFormat javadoc.

Why you called it pdf is beyond me, so I renamed it sdf ;)

查看更多
Luminary・发光体
4楼-- · 2019-01-20 00:18

MM stands for numeric month. Use MMM.

查看更多
登录 后发表回答