При необходимости преобразовать Java LocalDate формата dd-MM-yyyy в LocalDate формата dd/MM/yyyy.

Попытка с:

DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = // LocalDate value in dd-MM-yyyy format
String stringDate = dateFormat.format(date);
LocalDate convertedDate = LocalDate.parse(stringDate, dateFormat);

Но все же это приводит к возврату даты в формате dd-MM-yyyy. Любой эффективный способ сделать это?

0
dinesh alwis 21 Апр 2020 в 12:10
3
У тебя что-то фундаментальное не так. LocalDate не имеет формата. Это просто объект даты. Когда вы печатаете объект LocalDate, вызывается его метод toString(), и он использует формат yyyy-MM-dd по умолчанию (возможно, это зависит от локали).
 – 
ernest_k
21 Апр 2020 в 12:14
Понятно. да, это имеет смысл. так есть ли способ добиться этого?
 – 
dinesh alwis
21 Апр 2020 в 12:21
Нет, @dineshalwis, нет. Также лучше сохранить дату в LocalDate и желаемый формат в String.
 – 
Ole V.V.
21 Апр 2020 в 20:11

1 ответ

Реализация toString по умолчанию в LocalDate.java, похоже, жестко связана с "-" в качестве разделителя. Таким образом, все операторы печати по умолчанию будут иметь одинаковый формат. Кажется, единственным выходом было бы использовать средство форматирования и получить строковый вывод.

return buf.append(monthValue < 10 ? "-0" : "-")
            .append(monthValue)
            .append(dayValue < 10 ? "-0" : "-")
            .append(dayValue)
            .toString();

Кроме того, целью LocalDate.parse(..) является не преобразование формата даты. На самом деле это означает просто получить значение даты в String и предоставить результирующий экземпляр LocalDate.

Надеюсь это поможет.

0
Abhi 21 Апр 2020 в 13:04
Извините, я не могу найти полный ответ здесь. Но спасибо.
 – 
dinesh alwis
21 Апр 2020 в 13:29