Как анализировать 2-значные годы в бэкпорте Java 8/JSR 310/ threeten.org?

Этот вопрос относится к анализу двухзначных лет в бэкпорте Java 8 / JSR 310 / threeten.org. Двузначные годы — это неприятный факт из жизни, с которым нужно иметь дело.

Меня беспокоит только календарь ISO. JSR 310 по умолчанию предполагает «базовый год» 2000 года для двухзначного года.

Я вижу, что управление базовым годом доступно через

DateTimeFormatterBuilder.appendValueReduced(...)

Шаблоны формата обеспечивают удобный механизм для указания форматов даты.

dd-MMM-yy
M/d/yy
d/M/yy

Я не вижу механизма для применения «базового года» для двузначных лет после применения шаблона формата.

У Joda-time был DateTimeFormatter.withPivotYear(int pivotYear) как механизм для решения этой проблемы.

  • Есть ли в JSR 310 механизм применения базы для двузначного года после указания шаблона?

  • Каковы наиболее эффективные рекомендации по синтаксическому анализу двухзначного года, когда базовый год может быть не 2000 годом?


person Michael Howard    schedule 13.05.2015    source источник
comment
См. мой ответ в этом сообщении. Нет удобного способа настроить опорный год (также нет способа на основе шаблона), но в своем ответе я, по крайней мере, продемонстрировал способ сделать это.   -  person Meno Hochschild    schedule 13.05.2015
comment
Мено, ваша демонстрация того, как комбинировать .appendPattern() и .appendValueReduced(), очень полезна. Спасибо.   -  person Michael Howard    schedule 14.05.2015