Если я использую шаблон, такой как d/M/yy
для создания Java 8 DateTimeFormatter (например, используя DateTimeFormatter.ofPattern(pattern);
(который я буду использовать только для синтаксического анализа, а не для форматирования), он будет интерпретировать все двухбуквенные годы как 20xx, например, разбор строки, такой как 13/5/99
, интерпретироваться как 2099-05-13
, что в моем случае неверно (оно должно было быть в 1999 году).Как изменить базовую дату для синтаксического анализа двухбуквенных лет с помощью Java 8 DateTimeFormatter?
В моем приложении я пытаюсь разобрать даты из документов OCR'd, которые могут, например, 90-е годы, поэтому наличие старого поведения SimpleDateFormat для интерпретации даты в течение 80 лет до и через 20 лет после текущей даты подходит мне довольно хорошо. Но по разным причинам я все еще хочу переключить всю логику синтаксического анализа на новую Java 8 DateTimeFormatters.
Просматривая исходный код Java, я вижу, что все это интерпретируется относительно константы ReducedPrinterParser.BASE_DATE
, но я не вижу способа изменить значение, используемое при построении собственного форматирования из шаблона. Разве это просто невозможно, или я пропустил какую-то возможность указать поведение для разбора двухбуквенных лет?
Возможный дубликат [Синтаксический строку местная дата не использует желаемый век] (http://stackoverflow.com/questions/29490893/parsing-string-to-local-date-doesnt-use-desired-century) –