Why can't this SimpleDateFormat parse this date string?
Solution 1:
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
;)
Solution 2:
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"
Solution 3:
MM stands for numeric month. Use MMM.