Во-первых, трехмесячные месяцы должны быть представлены MMM
. Во-вторых, одно-двузначные часы должны быть представлены h
. В-третьих, Mar
кажется английским, вам нужно указать Locale.ENGLISH
, иначе он не будет работать должным образом на машинах с другим языком по умолчанию.
Следующие работы:
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"));
Результат (я в GMT-4 без летнего времени):
Tue Mar 30 17:27:40 BOT 2010
Также см. java.text.SimpleDateFormat
Javadoc .
Почему вы назвали это pdf
вне меня, поэтому я переименовал его sdf
;)