Это работает:
String s = "January 10th, 2010";
DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy");
System.out.println("" + dateFormat.parse(s.replaceAll("(?:st|nd|rd|th),", "")));
но вам нужно убедиться, что вы используете правильный Locale
для правильного анализа названия месяца.
Я знаю, что вы можете включить общие тексты в шаблон SimpleDateFormat
. Однако в этом случае текст зависит от информации и на самом деле не имеет отношения к процессу анализа.
Это на самом деле самое простое решение, которое я могу придумать. Но я бы хотел, чтобы меня показывали неправильно.
Вы можете избежать ошибок, выявленных в одном из комментариев, выполнив нечто похожее на это:
String s = "January 10th, 2010";
DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy");
System.out.println("" + dateFormat.parse(s.replaceAll("(?<= \\d+)(?:st|nd|rd|th),(?= \\d+$)", "")));
Это позволит вам не совпадать, например, Jath,uary 10 2010
.