Нельзя ли помочь найти ошибку в коде Java по получению диапазона дат за месяц?
Вывожу в консоль диапазон дат за месяц, для примера указан Апрель 2017. Но, в результате код выводит бОльшее количество дат, нежели мне нужно, он почему-то прогоняет месяц Апрель несколько раз по циклу. Список получается слишком длинный. Мне нужно просто вывести с 1-го апреля по 30-е. Не могу понять, какая ошибка в коде.
Код у меня вот такой:
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// April 2017
YearMonth ym = YearMonth.of(2017, 4);
// get the last day of month
int lastDay = ym.lengthOfMonth();
// loop through the days
for(int day = 1; day <= lastDay; day++) {
// create the day
LocalDate dt = ym.atDay(day);
// set to midnight at JVM default timezone
do {
System.out.println(dt.format(DateTimeFormatter.ofPattern("dd.MM.yyyy")));
dt = dt.plusDays(1);
} while (dt.getDayOfMonth() > 1);
}
}
}
Источник: Stack Overflow на русском