From 3debfa944fd775b1bd681f1b74369540961f2568 Mon Sep 17 00:00:00 2001 From: Azhwani <13301425+azhwani@users.noreply.github.com> Date: Sat, 24 Jun 2023 10:38:42 +0200 Subject: [PATCH] BAEL-6397: Adding One Month to Current Date in Java (#14261) --- .../core-java-date-operations-3/pom.xml | 18 +++++ .../AddOneMonthToCurrentDateUnitTest.java | 79 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/date/AddOneMonthToCurrentDateUnitTest.java diff --git a/core-java-modules/core-java-date-operations-3/pom.xml b/core-java-modules/core-java-date-operations-3/pom.xml index 89c21a31c1..19760ca357 100644 --- a/core-java-modules/core-java-date-operations-3/pom.xml +++ b/core-java-modules/core-java-date-operations-3/pom.xml @@ -12,5 +12,23 @@ core-java-modules 0.0.1-SNAPSHOT + + + + joda-time + joda-time + ${joda-time.version} + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + + 2.12.5 + 3.12.0 + \ No newline at end of file diff --git a/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/date/AddOneMonthToCurrentDateUnitTest.java b/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/date/AddOneMonthToCurrentDateUnitTest.java new file mode 100644 index 0000000000..7b15fadd03 --- /dev/null +++ b/core-java-modules/core-java-date-operations-3/src/test/java/com/baeldung/date/AddOneMonthToCurrentDateUnitTest.java @@ -0,0 +1,79 @@ +package com.baeldung.date; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.time.LocalDate; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +import org.apache.commons.lang3.time.DateUtils; +import org.junit.jupiter.api.Test; + +class AddOneMonthToCurrentDateUnitTest { + + @Test + void givenCalendarDate_whenAddingOneMonth_thenDateIsChangedCorrectly() { + Calendar calendar = Calendar.getInstance(); + // Dummy current date + calendar.set(2023, Calendar.APRIL, 20); + + // add one month + calendar.add(Calendar.MONTH, 1); + + assertEquals(Calendar.MAY, calendar.get(Calendar.MONTH)); + assertEquals(20, calendar.get(Calendar.DAY_OF_MONTH)); + assertEquals(2023, calendar.get(Calendar.YEAR)); + } + + @SuppressWarnings("deprecation") + @Test + void givenDate_whenAddingOneMonth_thenDateIsChangedCorrectly() { + // Dummy current date + Date currentDate = new Date(2023, Calendar.DECEMBER, 20); + // Expected Date + Date expectedDate = new Date(2024, Calendar.JANUARY, 20); + + // add one month + currentDate.setMonth(currentDate.getMonth() + 1); + + assertEquals(expectedDate, currentDate); + } + + @Test + void givenJavaLocalDate_whenAddingOneMonth_thenDateIsChangedCorrectly() { + // Dummy current date + LocalDate localDate = LocalDate.of(2023, 12, 20); + + // add one month + localDate = localDate.plusMonths(1); + + assertEquals(1, localDate.getMonthValue()); + assertEquals(20, localDate.getDayOfMonth()); + assertEquals(2024, localDate.getYear()); + } + + @Test + void givenJodaTimeLocalDate_whenAddingOneMonth_thenDateIsChangedCorrectly() { + // Dummy current date + org.joda.time.LocalDate localDate = new org.joda.time.LocalDate(2023, 12, 20); + + // add one month + localDate = localDate.plusMonths(1); + + assertEquals(1, localDate.getMonthOfYear()); + assertEquals(20, localDate.getDayOfMonth()); + assertEquals(2024, localDate.getYear()); + } + + @Test + void givenApacheCommonsLangDateUtils_whenAddingOneMonth_thenDateIsChangedCorrectly() { + // Dummy current date + Date currentDate = new GregorianCalendar(2023, Calendar.APRIL, 20, 4, 0).getTime(); + // Expected Date + Date expectedDate = new GregorianCalendar(2023, Calendar.MAY, 20, 4, 0).getTime(); + + assertEquals(expectedDate, DateUtils.addMonths(currentDate, 1)); + } + +}