Как изменить базовую дату для анализа двухбуквенных лет с помощью Java 8 DateTimeFormatter?
Если я использую шаблон какd/M/yy
для создания Java 8 DateTimeFormatter (например, используяDateTimeFormatter.ofPattern(pattern);
(который я буду использовать только для анализа, а не форматирования), он будет интерпретировать все двухбуквенные годы как 20xx, например, разбирать строку как13/5/99
быть интерпретированным как2099-05-13
, что в моем случае неправильно (это должно было быть в 1999 году).
В моем приложении я пытаюсь проанализировать даты из документов OCR, которые могли бы, например, по-прежнему относится к 90-м годам, поэтому мне вполне подходит прежнее поведение SimpleDateFormat, заключающееся в интерпретации даты за 80 лет до и через 20 лет после текущей даты. Но по разным причинам я все еще пытаюсь переключить всю логику разбора даты на новые Java 8 DateTimeFormatters.
Просматривая исходный код Java, я вижу, что все это интерпретируется относительно константыReducedPrinterParser.BASE_DATE
, но я не вижу способа изменить значение, используемое при построении моего собственного средства форматирования из шаблона. Это просто невозможно или я упустил возможность указать поведение для разбора двухбуквенных лет?