From 12de8904abeceae7fa585e8ce03a0e1b0c88a644 Mon Sep 17 00:00:00 2001 From: "thibault.faure" Date: Thu, 1 Jun 2023 23:54:00 +0200 Subject: [PATCH] BAEL-6595 code for the How Many Days Are There in a Particular Month of a Given Year article --- .../daysinmonth/DaysInMonthUtils.java | 21 ++++++++++++++++ .../daysinmonth/DaysInMonthUtilsUnitTest.java | 25 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 core-java-modules/core-java-8-datetime-2/src/main/java/com/baeldung/daysinmonth/DaysInMonthUtils.java create mode 100644 core-java-modules/core-java-8-datetime-2/src/test/java/com/baeldung/daysinmonth/DaysInMonthUtilsUnitTest.java 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)); + } + +}