diff --git a/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/daysinmonth/DaysInMonthUtils.java b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/daysinmonth/DaysInMonthUtils.java new file mode 100644 index 0000000000..93140e7459 --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/daysinmonth/DaysInMonthUtils.java @@ -0,0 +1,21 @@ +package com.baeldung.daysinmonth; + +import java.time.YearMonth; +import java.util.Calendar; + +public class DaysInMonthUtils { + + public int getDaysInMonthWithYearOfMonth(int month, int year) { + YearMonth yearMonth = YearMonth.of(year, month); + return yearMonth.lengthOfMonth(); + } + + public int getDaysInMonthWithCalendar(int month, int year) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month - 1); + return calendar.getActualMaximum(Calendar.DATE); + } + +} diff --git a/core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/daysinmonth/DaysInMonthUtilsUnitTest.java b/core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/daysinmonth/DaysInMonthUtilsUnitTest.java new file mode 100644 index 0000000000..ffaf231f7b --- /dev/null +++ b/core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/daysinmonth/DaysInMonthUtilsUnitTest.java @@ -0,0 +1,25 @@ +package com.baeldung.daysinmonth; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class DaysInMonthUtilsUnitTest { + + @Test + void whenGetDaysInMonthWithYearOfMonth_thenCorrectResult() { + assertEquals(31, new DaysInMonthUtils().getDaysInMonthWithYearOfMonth(3, 2024)); + assertEquals(30, new DaysInMonthUtils().getDaysInMonthWithYearOfMonth(11, 1999)); + assertEquals(28, new DaysInMonthUtils().getDaysInMonthWithYearOfMonth(2, 2025)); + assertEquals(29, new DaysInMonthUtils().getDaysInMonthWithYearOfMonth(2, 2004)); + } + + @Test + void whenGetDaysInMonthWithCalendar_thenCorrectResult() { + assertEquals(31, new DaysInMonthUtils().getDaysInMonthWithCalendar(3, 2024)); + assertEquals(30, new DaysInMonthUtils().getDaysInMonthWithCalendar(11, 1999)); + assertEquals(28, new DaysInMonthUtils().getDaysInMonthWithCalendar(2, 2025)); + assertEquals(29, new DaysInMonthUtils().getDaysInMonthWithCalendar(2, 2004)); + } + +}