Что ж, просто использование шаблона, предложенного первым ответом и мной в комментарии, кажется недостаточным.
Я сам попробовал и получил DateTimeParseException
тоже.
Я наконец-то обнаружил некоторый код, который делает то, что вы хотите, но, похоже, требуется определенное Locale
:
public static void main(String args[]) {
String currentDate = "02 MAY 2019";
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.parseLenient()
.appendPattern("dd MMM yyyy")
// does not work without the Locale:
.toFormatter(Locale.ENGLISH);
DateTimeFormatter dtfIso = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate d = LocalDate.parse(currentDate, dtf);
System.out.println(d.format(dtfIso));
}
Это приводит к выводу
02/05/2019
Очевидно, что необходимо обращать внимание на порядок вызовов методов при определении DateTimeFormatter
для (необычных?) Таких шаблонов. Кроме того, не предоставление Locale
или предоставление отличного от Locale.ENGLISH
, кажется, вызывает DateTimeParseException
, я изменил его на Locale.getDefault()
(GER в моем случае), и Exception
был брошен, однако с Интересное сообщение, потому что с моей ошибкой критикуется индекс 4, а не 3, как раньше с вами.