Почему DateTimeFormatter не форматирует мою строку? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть простая строка даты headerValues[5]="24.11.1946". Я просто хочу преобразовать, разобрать его в объект Date. Поэтому я использую

  DateTimeFormatter formatter = ofPattern(("dd.MM.yyyy");
  headerLine.setStartDate(LocalDate.parse(headerValues[5],datePattern));

Вывод 2012-04-25 не мой желаемый 24.11.1946 ???

Почему ???

РЕДАКТИРОВАТЬ

Iпопробовал это ...

DateTimeFormatter datePattern = DateTimeFormatter.ofPattern("dd.MM.yyyy", Locale.GERMANY);
String date = "24.11.1946";
System.out.println("Date = "+ LocalDate.parse(date,datePattern));

Вывод ...

Дата = 1946-11-24

1 Ответ

2 голосов
/ 30 сентября 2019

Эта часть вашего кода ...

LocalDate.parse(date,datePattern)

создает экземпляр LocalDate.

Следовательно, в этой строке вашего кода ...

System.out.println("Date = "+ LocalDate.parse(date,datePattern));

Вы на самом деле вызываете метод toString() класса LocalDate.

Из javadoc этого метода ...

Вывод будетв формате ISO-8601 uuuu-MM-dd.

Вы не хотите этот формат. Вы хотите формат вашего datePattern объекта. Следовательно, вам следует изменить последнюю строку кода, который вы опубликовали, на ...

System.out.println(datePattern.format(LocalDate.parse(date,datePattern)));

Другими словами, один и тот же объект DateTimeFormatter может использоваться как для анализа String до даты, так и дляотформатировать дату в String.

...