Можно ли заставить Joda анализировать даты только в том случае, если они содержат четыре цифры года? Например:
- 2009-11-11 - должен разобрать
- 09-11-11 - не должен анализировать
Попробовал следующий код:
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
DateTimeFormatter formatter = builder.appendYear(4, 4).appendLiteral('-').appendMonthOfYear(1).appendLiteral('-').appendDayOfMonth(1).toFormatter();
formatter.parseDateTime("09-11-11");
Разбирает на 0009-11-11. Очевидно minDigits в методе appendYear используются только для форматирования при печати даты.
Результат тот же, если я использую appendYearOfEra (). Если я использую appendYearOfCentury (), вместо этого он анализирует год на 1909.
Мы реализуем общий анализатор данных, который распознает различные типы входных данных. Также пример - сокращенная форма реальной сделки (для простоты). Сценарии реальной жизни анализируют даты, которые могут содержать дни недели, месяцы в виде слов, время, зону и различные символы, разделяющие месяц, день и год. Поэтому написание RegEx или проверка содержимого / длины строки может оказаться довольно сложной задачей.
Некоторые реальные примеры могут выглядеть так:
- 2009-11-11
- среда 2009-11-11T15: 00: 00
- 2009/11/11 15: 00
- и многие другие ...