Как избежать повтора кода при работе с датами? (LocalDate)

Реализую метод, который отражает каждый год от заданной даты до текущей. Формат требуемого вывода:

0 - 31.12.1990 - Mon

1 - 31.12.1991 - Tue 

и далее до 2021 года. Код получился такой

    LocalDate date = LocalDate.of(1990, 12, 31);
    String formattedDate = date.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT));
    String str = "0 - " + formattedDate + " - " + date.getDayOfWeek();
    LocalDate date1 = date.plusYears(1);
    String formattedDate1 = date1.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT));
    String str2 = "1 - " + formattedDate1 + " - " + date1.getDayOfWeek();
    System.out.println(str + System.lineSeparator() + str2);```

вывод:

0 - 31.12.1990 - MONDAY

1 - 31.12.1991 - TUESDAY

Как оптимизировать лучше? слишком много повтора кода и вручную приходится создавать каждую дату, прибавляя год к предыдущей.


Ответы (1 шт):

Автор решения: lexfiero

Если коротко примерно так:

        LocalDate date = LocalDate.of(1990, 12, 31);
        LocalDate now = LocalDate.now();

        for(int i = 0; i<= Period.between(date,now).getYears()+1;i++){

            LocalDate temp = date.plusYears(i);
            String str = i + " - " + temp.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)) + " - " + temp.getDayOfWeek();
            System.out.println(str);
        }

Смысл думаю понятен

→ Ссылка