diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml
index b19ad10255..4b52237372 100644
--- a/core-java-8/pom.xml
+++ b/core-java-8/pom.xml
@@ -94,6 +94,11 @@
streamex
${streamex.version}
+
+ joda-time
+ joda-time
+ ${joda.version}
+
@@ -233,6 +238,7 @@
0.9.0
1.13
0.6.5
+ 2.10
3.6.1
1.7.0
diff --git a/core-java-8/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java b/core-java-8/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java
new file mode 100644
index 0000000000..607db0da33
--- /dev/null
+++ b/core-java-8/src/main/java/com/baeldung/datetime/modify/DateIncrementer.java
@@ -0,0 +1,63 @@
+package com.baeldung.datetime.modify;
+
+import org.apache.commons.lang3.time.DateUtils;
+import org.joda.time.DateTime;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.logging.Logger;
+
+public class DateIncrementer {
+ private static final Logger log = Logger.getLogger(DateIncrementer.class.getName());
+ private static final int INCREMENT_BY_IN_DAYS = 1;
+
+ public static String addOneDay(String date) {
+ return LocalDate
+ .parse(date)
+ .plusDays(INCREMENT_BY_IN_DAYS)
+ .toString();
+ }
+
+ public static String addOneDayJodaTime(String date) {
+ DateTime dateTime = new DateTime(date);
+ return dateTime
+ .plusDays(INCREMENT_BY_IN_DAYS)
+ .toString("yyyy-MM-dd");
+ }
+
+ public static String addOneDayCalendar(String date) throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar c = Calendar.getInstance();
+ c.setTime(sdf.parse(date));
+ c.add(Calendar.DATE, 1);
+ return sdf.format(c.getTime());
+ }
+
+ public static String addOneDayApacheCommons(String date) throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ Date incrementedDate = DateUtils.addDays(sdf.parse(date), 1);
+ return sdf.format(incrementedDate);
+ }
+
+ public static void main(String[] args) throws ParseException {
+ String date = LocalDate
+ .now()
+ .toString();
+ log.info("Current date = " + date);
+
+ String incrementedDateJava8 = DateIncrementer.addOneDay(date);
+ log.info("Date incremented by one day using (Java 8): " + incrementedDateJava8);
+
+ String incrementedDateJodaTime = DateIncrementer.addOneDayJodaTime(date);
+ log.info("Date incremented by one day using (Joda-Time): " + incrementedDateJodaTime);
+
+ String incrementedDateCalendar = addOneDayCalendar(date);
+ log.info("Date incremented by one day using (java.util.Calendar): " + incrementedDateCalendar);
+
+ String incrementedDateApacheCommons = addOneDayApacheCommons(date);
+ log.info("Date incremented by one day using (Apache Commons DateUtils): " + incrementedDateApacheCommons);
+ }
+}
diff --git a/core-java-8/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java
new file mode 100644
index 0000000000..e384bf4254
--- /dev/null
+++ b/core-java-8/src/test/java/com/baeldung/datetime/modify/DateIncrementerUnitTest.java
@@ -0,0 +1,34 @@
+package com.baeldung.datetime.modify;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class DateIncrementerUnitTest {
+ private final static String DATE_TO_INCREMENT = "2018-07-03";
+ private final static String EXPECTED_DATE = "2018-07-04";
+
+ @Test
+ public void givenDate_whenUsingJava8_thenAddOneDay() throws Exception {
+ String incrementedDate = DateIncrementer.addOneDay(DATE_TO_INCREMENT);
+ assertEquals(EXPECTED_DATE, incrementedDate);
+ }
+
+ @Test
+ public void givenDate_whenUsingJodaTime_thenAddOneDay() throws Exception {
+ String incrementedDate = DateIncrementer.addOneDayJodaTime(DATE_TO_INCREMENT);
+ assertEquals(EXPECTED_DATE, incrementedDate);
+ }
+
+ @Test
+ public void givenDate_whenUsingCalendar_thenAddOneDay() throws Exception {
+ String incrementedDate = DateIncrementer.addOneDayCalendar(DATE_TO_INCREMENT);
+ assertEquals(EXPECTED_DATE, incrementedDate);
+ }
+
+ @Test
+ public void givenDate_whenUsingApacheCommons_thenAddOneDay() throws Exception {
+ String incrementedDate = DateIncrementer.addOneDayApacheCommons(DATE_TO_INCREMENT);
+ assertEquals(EXPECTED_DATE, incrementedDate);
+ }
+}