Вам необходимо использовать одну цитату для документов .
DateTimeFormatter DF_YYYY_0MM_DD = DateTimeFormat.forPattern("yyyy'0'MMdd");
Хотя это и странно, но в моем тестировании это все равно не работает, из-за того, что в библиотеке похоже на ошибку - в основном isNumericToken(String token)
в DateTimeFormat
в joda не учитывает числовые литералы. В конечном итоге это приводит к тому, что joda ожидает 9 цифр в году вместо 4.
Таким образом, в качестве обходного пути, вы можете сделать это для создания средства форматирования (а не создавать его непосредственно из строкового шаблона):
DateTimeFormatter DF_YYYY_0MM_DD = new DateTimeFormatterBuilder().appendYear(4,4).appendLiteral("0").appendMonthOfYear(2).appendDayOfMonth(2).toFormatter();
Или префикс вашей даты с 5 нулями (так что теперь год состоит из 9 цифр).
DateTimeFormatter DF_YYYY_0MM_DD = DateTimeFormat.forPattern("yyyy'0'MMdd");
System.out.println(DF_YYYY_0MM_DD.parseLocalDate("00000201800101"));
Или используйте разделитель.
DateTimeFormatter DF_YYYY_0MM_DD = DateTimeFormat.forPattern("yyyy-0-MM-dd");
System.out.println(DF_YYYY_0MM_DD.parseLocalDate("2018-0-01-01"));