Прежде всего, не годно использовать год как две цифры в виде строки. Почему?
Объяснение
для анализа вашей даты, это просто, вы можете использовать:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yy")
.withLocale(Locale.US);
LocalDate ld = LocalDate.parse("15-May-84", formatter);
Но
Это вернет 2084-05-15
, что, я думаю, вы не смотрите на это, но вы смотрите на 1984-05-15
.
Quick Fix
Таким образом, чтобы решить эту проблему, вы можете использовать команду minusYears(100)
:
LocalDate ld = LocalDate.parse("15-May-84", formatter).minusYears(100);
Но
, которая может быть проблемой в другие годы, например 15-May-20
, которая вернет 1920-05-15
.
Для этого я вообще не советую использовать две цифры в вашем году в виде строки.
Если только
, если у вас нет другого подтверждение того, что ваша дата находится между 1900
и 1999
или между 2000
и 2999
. в этом случае вы можете создать (безопасный) пользовательский парсер!
Важно
Не используйте устаревшую библиотеку Date, вместо этого используйте только современный java.time
API