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));
+ }
+
+}