Das Problem ist, dass Java das ordinal indicator Suffix, 1., 2. 3. etc. nicht versteht. Sie müssen zuerst dieses entfernen und dann das in ein DateFormat übergeben.
Ich würde auch empfehlen, dass Ihre Locale korrekt eingestellt ist, da "April" eine andere Zeichenfolge in verschiedenen Sprachen sein wird, die die geografische Portabilität Ihrer Software beeinflusst.
public static void main(String[] args) throws ParseException {
System.out.println(parseWithOrdinals("1st April,2016"));
System.out.println(parseWithOrdinals("3rd April,2016"));
System.out.println(parseWithOrdinals("22nd April,2016"));
}
private static Date parseWithOrdinals(String date) throws ParseException {
DateFormat format = new SimpleDateFormat("dd MMM,yyyy", Locale.UK);
String corrected = date.replaceFirst("(\\d+)+.*\\s(.*)", "$1 $2");
return format.parse(corrected);
}
Danke, diese Fragen haben auch sehr geholfen. – andy
Siehe auch [dieses Beispiel] (https://gist.github.com/MenoData/a133c20f54e2ee5eaa60656caccfdd11) für die Verwendung meiner API (Time4J). –