Я пытаюсь создать объект LocalDate, используя библиотеку JodaTime, из строки ввода. Строка поступает из базы данных, в которой я не контролирую. Дата ввода рождения выглядит точно так:Joda-Time create LocalDate from String с шаблоном
1963-07-19T00:00:00.000+0000
Я просто хочу 1963-07-19
части, я не хочу время части. Так что я пытался реализовать форматировщик так:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
А затем создать объект LocalDate как так:
LocalDate dob = formatter.parseLocalDate(dateOfBirth);
Но я получаю ошибку:
Invalid format: "1963-07-19T00:00:00.000+0000" is malformed at "T00:00:00.000+0000"
Я также попробовал форматировать следующим образом:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'hh:mm:ss.SSSZ");
Но затем я получаю ошибку:
Cannot parse "1963-07-19T00:00:00.000+0000": Value 0 for clockhourOfHalfday must be in the range [1,12]
И идея, как добиться того, что я хочу?
Отлично, это сработало. Я просто беспокоюсь, что БД вернет что-то более странное позже и проржет прог. Скрещенные пальцы. – Richard
@richard Если вам нужно, jodatime позволяет вам определять несколько парсеров. См. [Здесь] (http://stackoverflow.com/questions/3307330/using-joda-date-time-api-to-parse-multiple-formats). –