Важно сказать - есть тонны библиотек, которые дадут вам эту конкретную потребность, но я бы хотел положиться на ту, которая выполняет свою работу и фактически была разработана для (некоторых из вас ...) этих вариантов использования -
Библиотека Java.time.LocalDate (уже встроена в Java 8)
import java.time.LocalDate;
LocalDate now = LocalDate.now(); // 2019-04-26
Чтобы получить первые и последние дни месяца, вы можете использовать:
LocalDate start = YearMonth.now().atDay(1);
(сейчас может быть другой месяц, конечно)
LocalDate end = YearMonth.now().atEndOfMonth();
Вы можете использовать его специально в течение одного / двух месяцев или с некоторыми для цикла. Примеры ниже:
1. Конкретный звонок:
LocalDate earlierOneMonth = now.minusMonths(1); // 2019-03-26
earlierOneMonth.getDay(); // 26
2. Для цикла: (поэтому вам нужно что-то вроде массива / списка для хранения этих значений ...)
for(int i=0; i < lastMonths - 1; i++){
arr(i) = now.minusMonths(i + 1);
}
Также для получения названия месяца вы можете использовать ->
earlierOneMonth.getMonth(); // APRIL
earlierOneMonth.getMonth.getValue(); // 04
Наконец, чтобы получить год, вы можете использовать ->
earlier.getYear(); // 2019
Когда у вас есть все желаемые значения, вы можете распечатать их по вашему запросу с ожидаемым результатом:
"current month is" + nowMonth + "-" + nowYear + " ,1st date is" + nowDay + "-" + nowMonth + "-" + nowYear + " and last date is ...
Дайте мне знать, если это достаточно ясно:)