Core Java

Java 8 Add Days to Current Date Example

Photo of Mary ZhengMary ZhengOctober 30th, 2018Last Updated: February 25th, 2019
0 288 8 minutes read

1. Introduction

Java 8 added a new set of packages to provide a comprehensive date-time model. Java 8 Date-Time API is a JSR-310 implementation. In this example, I will use classes from the java.time andjava.time.format packages to demonstrate how to add days to the current date.

  • java.time is the base package which includes a set of date-time classes: LocalDate,LocalDateTime,Instant,Period,Duration,Clock,ZonedDateTime, etc. These classes use the calendar system defined inISO-8601 as the default calendar. Each class has a now() method to get the current date and common utility operations: plus, minus, format, etc.
  • java.time.format includes classes for formatting and parsing date and time objects.

2. Technologies used

The example code in this article was built and run using:

  • Java 1.8.101
  • Maven 3.3.9
  • Eclipse Oxygen
  • JUnit 4.12

3. Maven Project

3.1 Dependency

Add Junit to the pom.xml.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>zheng.jcg.demo</groupId><artifactId>java8-date</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>

3.2 Add Days with LocalDate

LocalDate is a date class without a time-zone in the ISO-8601 calendar system, such as 2018-10-25.

In this step, I will demonstrate how to add days to the current date usingLocalDate in two steps:

  1. Get the current date via the now method.
  2. Add days via the plusDays andplus methods.

AddDays_LocalDate.java

package com.zheng.demo;import java.time.LocalDate;import java.time.Period;import java.time.ZoneId;import java.time.temporal.ChronoUnit;public class AddDays_LocalDate {private LocalDate currentDate;public AddDays_LocalDate() {super();currentDate = LocalDate.now();}public AddDays_LocalDate(ZoneId zoneId) {currentDate = LocalDate.now(zoneId);}public LocalDate addDays_by_plusDays(Long days) {return currentDate.plusDays(days.longValue());}public LocalDate addDays_by_plus(Long days) {return currentDate.plus(Period.ofDays(days.intValue()));}public LocalDate addDays_by_plus_2(Long days) {return currentDate.plus(days.longValue(), ChronoUnit.DAYS);}public LocalDate substractDays_by_minusDays(Long days) {return currentDate.minusDays(days.longValue());}public LocalDate getCurrentDate() {return currentDate;}public void setCurrentDate(LocalDate currentDate) {this.currentDate = currentDate;}}

3.3 Add Days with LocalDateTime

LocalDateTime is a date-time class without a time-zone in the ISO-8601 calendar system, such as 2018-10-25T10:15:30.

In this step, I will demonstrate how to add days to the current date usingLocalDateTime via plus andplusDays.

AddDays_LocalDateTime.java

package com.zheng.demo;import java.time.LocalDateTime;import java.time.Period;import java.time.ZoneId;import java.time.temporal.ChronoUnit;public class AddDays_LocalDateTime {private LocalDateTime currentDate;public AddDays_LocalDateTime() {super();currentDate = LocalDateTime.now();}public AddDays_LocalDateTime(ZoneId zoneId) {currentDate = LocalDateTime.now(zoneId);}public LocalDateTime addDays_by_plusDays(Long days) {return currentDate.plusDays(days.longValue());}public LocalDateTime addDays_by_plus(Long days) {return currentDate.plus(Period.ofDays( days.intValue()));}public LocalDateTime addDays_by_plus_2(Long days) {return currentDate.plus(days.longValue(), ChronoUnit.DAYS);}public LocalDateTime substractDays_by_minusDays(Long days) {return currentDate.minusDays(days.longValue());}public LocalDateTime getCurrentDate() {return currentDate;}public void setCurrentDate(LocalDateTime currentDate) {this.currentDate = currentDate;}}

3.4 Add Days with ZonedDateTime

ZonedDateTime is a date-time class with a time-zone in the ISO-8601 calendar system, such as 2018-10-25T10:15:30+01:00 US/Central.

In this step, I will demonstrate how to add days to the current date using ZonedDateTime via plus andplusDays.

AddDays_ZonedDateTime.java

package com.zheng.demo;import java.time.Period;import java.time.ZonedDateTime;import java.time.temporal.ChronoUnit;public class AddDays_ZonedDateTime {private ZonedDateTime currentDate;public AddDays_ZonedDateTime() {super();currentDate = ZonedDateTime.now();}public ZonedDateTime addDays_by_plusDays(Long days) {return currentDate.plusDays(days.longValue());}public ZonedDateTime addDays_by_plus(Long days) {return currentDate.plus(Period.ofDays(days.intValue()));}public ZonedDateTime addDays_by_plus_2(Long days) {return currentDate.plus(days.longValue(), ChronoUnit.DAYS);}public ZonedDateTime substractDays_by_minusDays(Long days) {return currentDate.minusDays(days.longValue());}public ZonedDateTime getCurrentDate() {return currentDate;}public void setCurrentDate(ZonedDateTime currentDate) {this.currentDate = currentDate;}}

3.5 Add Days with Instant

Instant models a single instantaneous point on the timeline.

In this step, I will demonstrate how to add days to the current date using Instant via plus.

AddDays_Instant.java

package com.zheng.demo;import java.time.Duration;import java.time.Instant;import java.time.temporal.ChronoUnit;public class AddDays_Instant {private Instant currentDate;public AddDays_Instant() {super();currentDate = Instant.now();}public Instant addDays_by_plus_2(Long days) {return currentDate.plus(days.longValue(), ChronoUnit.DAYS);}public Instant addDays_by_plus(Long days) {return currentDate.plus(Duration.ofDays(days.longValue()));}public Instant substractDaysWithMinus(Long days) {return currentDate.minus(days.longValue(), ChronoUnit.DAYS);}public Instant getCurrentDate() {return currentDate;}public void setCurrentDate(Instant currentDate) {this.currentDate = currentDate;}}

3.6 Add Days with Clock

Clock provides access to the current instant, date, and time.

In this step, I will demonstrate how to add days to the current date using Clock via instant.

AddDays_Clock.java

package com.zheng.demo;import java.time.Clock;import java.time.Instant;import java.time.temporal.ChronoUnit;public class AddDays_Clock {private Instant currentDate;public AddDays_Clock() {super();currentDate = Clock.systemUTC().instant();}public Instant addDays(Long days) {return currentDate.plus(days.longValue(), ChronoUnit.DAYS);}public Instant substractDays(Long days) {return currentDate.minus(days.longValue(), ChronoUnit.DAYS);}public Instant getCurrentDate() {return currentDate;}public void setCurrentDate(Instant currentDate) {this.currentDate = currentDate;}}

4. JUnit Tests

4.1 AddDays_LocalDateTest

I will use the Java 8DateTimeFormatter to format theLocalDate as"yyyy/MM/dd" and test it by adding days to the current date.

AddDays_LocalDateTest.java

package com.zheng.demo;import static org.junit.Assert.assertTrue;import java.time.LocalDate;import java.time.ZoneId;import java.time.format.DateTimeFormatter;import org.junit.Before;import org.junit.Test;public class AddDays_LocalDateTest {private static final int DAYS = 10;private static final String ISO8601_DATE_FORMAT = "yyyy/MM/dd";private static final DateTimeFormatter dateFormat8 = DateTimeFormatter.ofPattern(ISO8601_DATE_FORMAT);private AddDays_LocalDate defaultZoneDate = new AddDays_LocalDate();private AddDays_LocalDate cstZoneDate = new AddDays_LocalDate(ZoneId.of("US/Central"));@Beforepublic void setup() {System.out.println("*****\nOriginal defaultZoneDate : " + dateFormat8.format(defaultZoneDate.getCurrentDate()));System.out.println("*****\nOriginal cstZoneDate : " + dateFormat8.format(cstZoneDate.getCurrentDate()));System.out.println("-----");}@Testpublic void test_addDays_by_plusDays() {for (int i = 0; i < DAYS; i++) {LocalDate plusDate = defaultZoneDate.addDays_by_plusDays(Long.valueOf(i));assertTrue( i == plusDate.getDayOfYear() - defaultZoneDate.getCurrentDate().getDayOfYear());System.out.println(" Plus " + i + " days = " + dateFormat8.format(plusDate));}}@Testpublic void test_substractDays_by_minusDays() {for (int i = 0; i < DAYS; i++) {LocalDate minusDate = defaultZoneDate.substractDays_by_minusDays(Long.valueOf(i));assertTrue( i ==  defaultZoneDate.getCurrentDate().getDayOfYear() - minusDate.getDayOfYear());System.out.println(" Minus " + i + " days = " + dateFormat8.format(minusDate));}}}

4.2 AddDays_LocalDateTimeTest

I will use the Java 8DateTimeFormatter to format theLocalDateTime as"yyyy/MM/dd HH:mm:ss" and test it by adding days to the current date.

AddDays_LocalDateTimeTest.java

package com.zheng.demo;import static org.junit.Assert.assertTrue;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.format.DateTimeFormatter;import org.junit.Before;import org.junit.Test;public class AddDays_LocalDateTimeTest {private static final int DAYS = 10;private static final String ISO8601_DATE_FORMAT = "yyyy/MM/dd HH:mm:ss";private static final DateTimeFormatter dateFormat8 = DateTimeFormatter.ofPattern(ISO8601_DATE_FORMAT);private AddDays_LocalDateTime defaultZoneDate = new AddDays_LocalDateTime();private AddDays_LocalDateTime cstZoneDate = new AddDays_LocalDateTime(ZoneId.of("US/Central"));@Beforepublic void setup() {System.out.println("*****\nOriginal defaultZoneDate : " + dateFormat8.format(defaultZoneDate.getCurrentDate()));System.out.println("*****\nOriginal cstZoneDate : " + dateFormat8.format(cstZoneDate.getCurrentDate()));System.out.println("-----");}@Testpublic void plus_number_of_days() {for (int i = 0; i < DAYS; i++) {LocalDateTime plusDate = defaultZoneDate.addDays_by_plusDays(Long.valueOf(i));assertTrue( i == plusDate.getDayOfYear() - defaultZoneDate.getCurrentDate().getDayOfYear());System.out.println("Plus " + i + " = " + dateFormat8.format(plusDate));}}@Testpublic void minus_number_of_days() {for (int i = 0; i < DAYS; i++) {LocalDateTime minusDate = defaultZoneDate.substractDays_by_minusDays(Long.valueOf(i));assertTrue( i ==  defaultZoneDate.getCurrentDate().getDayOfYear() - minusDate.getDayOfYear());System.out.println("Minus" + i + " = " + dateFormat8.format(minusDate));}}}

4.3 AddDays_ZondedDateTimeTest

I will use the Java 8ZonedTimeFormatter to format theZondedDateTime and test it by adding days to the current date.

Want to be a Java 8 Ninja ?
Subscribe to our newsletter and download the Java 8 FeaturesUltimateGuideright now!
In order to get you up to speed with the major Java 8 release, we have compiled a kick-ass guide with all the new features and goodies! Besides studying them online you may download the eBook in PDF format!

Thank you!

We will contact you soon.

AddDays_ZondedDateTimeTest.java

package com.zheng.demo;import static org.junit.Assert.assertTrue;import java.time.ZonedDateTime;import java.time.format.DateTimeFormatter;import org.junit.Before;import org.junit.Test;public class AddDays_ZonedDateTimeTest {private static final int DAYS = 10;private static final DateTimeFormatter dateFormat8 = DateTimeFormatter.ISO_OFFSET_DATE_TIME;private AddDays_ZonedDateTime defaultZoneDate = new AddDays_ZonedDateTime();@Beforepublic void setup() {System.out.println("*****\nOriginal defaultZoneDate : " + dateFormat8.format(defaultZoneDate.getCurrentDate()));System.out.println("-----");}@Testpublic void add_number_of_days_byPlusDays() {for (int i = 1; i < DAYS; i++) {ZonedDateTime plusDate = defaultZoneDate.addDays_by_plusDays(Long.valueOf(i));assertTrue( i == plusDate.getDayOfYear() - defaultZoneDate.getCurrentDate().getDayOfYear());System.out.println("PlusDays " + i + " = " + dateFormat8.format(plusDate));}}@Testpublic void add_number_of_days_byPlus() {for (int i = 1; i < DAYS; i++) {ZonedDateTime plusDate = defaultZoneDate.addDays_by_plus(Long.valueOf(i));assertTrue( i == plusDate.getDayOfYear() - defaultZoneDate.getCurrentDate().getDayOfYear());System.out.println("Plus " + i + "= " + dateFormat8.format(plusDate));}}}

4.4 AddDays_InstantTest

I will add days to the current date withInstant.

AddDays_InstantTest.java

package com.zheng.demo;import java.time.Instant;import org.junit.Before;import org.junit.Test;public class AddDays_InstantTest {private AddDays_Instant defaultZoneDate = new AddDays_Instant();@Beforepublic void setup() {System.out.println("*****\nOriginal defaultZoneDate : " + defaultZoneDate.getCurrentDate());System.out.println("-----");}@Testpublic void plus_number_of_days() {for (int i = 0; i < 10; i++) {Instant plusDate = defaultZoneDate.addDays_by_plus(Long.valueOf(i));System.out.println("Plus " + i + " = " + plusDate);}}@Testpublic void minus_number_of_days() {for (int i = 0; i < 10; i++) {Instant minusDate = defaultZoneDate.substractDaysWithMinus(Long.valueOf(i));System.out.println("Minus" + i + "= " + minusDate);}}}

4.5 AddDays_ClockTest

I will add days to the current date with the Clock.

AddDays_ClockTest.java

package com.zheng.demo;import java.time.Instant;import org.junit.Before;import org.junit.Test;public class AddDays_ClockTest {private AddDays_Clock defaultZoneDate = new AddDays_Clock();@Beforepublic void setup() {System.out.println("*****\nOriginal defaultZoneDate : " + defaultZoneDate.getCurrentDate());System.out.println("-----");}@Testpublic void plus_number_of_days() {for (int i = 1; i < 10; i++) {Instant plusDate = defaultZoneDate.addDays(Long.valueOf(i));System.out.println("defaultZoneDate Plus " + i + " = " + plusDate);}}@Testpublic void minus_number_of_days() {for (int i = 1; i < 10; i++) {Instant minusDate = defaultZoneDate.substractDays(Long.valueOf(i));System.out.println("defaultZoneDate Minus" + i + "= " + minusDate);}}}

5. Demo

Executemvn clean install and capture the output:

Tests Output

-------------- T E S T S-------------------------------------------------------Running com.zheng.demo.AddDays_ClockTest*****Original defaultZoneDate : 2018-10-25T19:30:20.773Z-----defaultZoneDate Minus1= 2018-10-24T19:30:20.773ZdefaultZoneDate Minus2= 2018-10-23T19:30:20.773ZdefaultZoneDate Minus3= 2018-10-22T19:30:20.773ZdefaultZoneDate Minus4= 2018-10-21T19:30:20.773ZdefaultZoneDate Minus5= 2018-10-20T19:30:20.773ZdefaultZoneDate Minus6= 2018-10-19T19:30:20.773ZdefaultZoneDate Minus7= 2018-10-18T19:30:20.773ZdefaultZoneDate Minus8= 2018-10-17T19:30:20.773ZdefaultZoneDate Minus9= 2018-10-16T19:30:20.773Z*****Original defaultZoneDate : 2018-10-25T19:30:20.824Z-----defaultZoneDate Plus 1 = 2018-10-26T19:30:20.824ZdefaultZoneDate Plus 2 = 2018-10-27T19:30:20.824ZdefaultZoneDate Plus 3 = 2018-10-28T19:30:20.824ZdefaultZoneDate Plus 4 = 2018-10-29T19:30:20.824ZdefaultZoneDate Plus 5 = 2018-10-30T19:30:20.824ZdefaultZoneDate Plus 6 = 2018-10-31T19:30:20.824ZdefaultZoneDate Plus 7 = 2018-11-01T19:30:20.824ZdefaultZoneDate Plus 8 = 2018-11-02T19:30:20.824ZdefaultZoneDate Plus 9 = 2018-11-03T19:30:20.824ZTests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.154 secRunning com.zheng.demo.AddDays_InstantTest*****Original defaultZoneDate : 2018-10-25T19:30:20.829Z-----Minus0= 2018-10-25T19:30:20.829ZMinus1= 2018-10-24T19:30:20.829ZMinus2= 2018-10-23T19:30:20.829ZMinus3= 2018-10-22T19:30:20.829ZMinus4= 2018-10-21T19:30:20.829ZMinus5= 2018-10-20T19:30:20.829ZMinus6= 2018-10-19T19:30:20.829ZMinus7= 2018-10-18T19:30:20.829ZMinus8= 2018-10-17T19:30:20.829ZMinus9= 2018-10-16T19:30:20.829Z*****Original defaultZoneDate : 2018-10-25T19:30:20.831Z-----Plus 0 = 2018-10-25T19:30:20.831ZPlus 1 = 2018-10-26T19:30:20.831ZPlus 2 = 2018-10-27T19:30:20.831ZPlus 3 = 2018-10-28T19:30:20.831ZPlus 4 = 2018-10-29T19:30:20.831ZPlus 5 = 2018-10-30T19:30:20.831ZPlus 6 = 2018-10-31T19:30:20.831ZPlus 7 = 2018-11-01T19:30:20.831ZPlus 8 = 2018-11-02T19:30:20.831ZPlus 9 = 2018-11-03T19:30:20.831ZTests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 secRunning com.zheng.demo.AddDays_LocalDateTest*****Original defaultZoneDate : 2018/10/25*****Original cstZoneDate : 2018/10/25----- Plus 0 days = 2018/10/25 Plus 1 days = 2018/10/26 Plus 2 days = 2018/10/27 Plus 3 days = 2018/10/28 Plus 4 days = 2018/10/29 Plus 5 days = 2018/10/30 Plus 6 days = 2018/10/31 Plus 7 days = 2018/11/01 Plus 8 days = 2018/11/02 Plus 9 days = 2018/11/03*****Original defaultZoneDate : 2018/10/25*****Original cstZoneDate : 2018/10/25----- Minus 0 days = 2018/10/25 Minus 1 days = 2018/10/24 Minus 2 days = 2018/10/23 Minus 3 days = 2018/10/22 Minus 4 days = 2018/10/21 Minus 5 days = 2018/10/20 Minus 6 days = 2018/10/19 Minus 7 days = 2018/10/18 Minus 8 days = 2018/10/17 Minus 9 days = 2018/10/16Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 secRunning com.zheng.demo.AddDays_LocalDateTimeTest*****Original defaultZoneDate : 2018/10/25 14:30:20*****Original cstZoneDate : 2018/10/25 14:30:20-----Minus0 = 2018/10/25 14:30:20Minus1 = 2018/10/24 14:30:20Minus2 = 2018/10/23 14:30:20Minus3 = 2018/10/22 14:30:20Minus4 = 2018/10/21 14:30:20Minus5 = 2018/10/20 14:30:20Minus6 = 2018/10/19 14:30:20Minus7 = 2018/10/18 14:30:20Minus8 = 2018/10/17 14:30:20Minus9 = 2018/10/16 14:30:20*****Original defaultZoneDate : 2018/10/25 14:30:20*****Original cstZoneDate : 2018/10/25 14:30:20-----Plus 0 = 2018/10/25 14:30:20Plus 1 = 2018/10/26 14:30:20Plus 2 = 2018/10/27 14:30:20Plus 3 = 2018/10/28 14:30:20Plus 4 = 2018/10/29 14:30:20Plus 5 = 2018/10/30 14:30:20Plus 6 = 2018/10/31 14:30:20Plus 7 = 2018/11/01 14:30:20Plus 8 = 2018/11/02 14:30:20Plus 9 = 2018/11/03 14:30:20Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.065 secRunning com.zheng.demo.AddDays_ZonedDateTimeTest*****Original defaultZoneDate : 2018-10-25T14:30:20.876-05:00-----PlusDays 1 = 2018-10-26T14:30:20.876-05:00PlusDays 2 = 2018-10-27T14:30:20.876-05:00PlusDays 3 = 2018-10-28T14:30:20.876-05:00PlusDays 4 = 2018-10-29T14:30:20.876-05:00PlusDays 5 = 2018-10-30T14:30:20.876-05:00PlusDays 6 = 2018-10-31T14:30:20.876-05:00PlusDays 7 = 2018-11-01T14:30:20.876-05:00PlusDays 8 = 2018-11-02T14:30:20.876-05:00PlusDays 9 = 2018-11-03T14:30:20.876-05:00*****Original defaultZoneDate : 2018-10-25T14:30:20.882-05:00-----Plus 1= 2018-10-26T14:30:20.882-05:00Plus 2= 2018-10-27T14:30:20.882-05:00Plus 3= 2018-10-28T14:30:20.882-05:00Plus 4= 2018-10-29T14:30:20.882-05:00Plus 5= 2018-10-30T14:30:20.882-05:00Plus 6= 2018-10-31T14:30:20.882-05:00Plus 7= 2018-11-01T14:30:20.882-05:00Plus 8= 2018-11-02T14:30:20.882-05:00Plus 9= 2018-11-03T14:30:20.882-05:00Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.08 secResults :Tests run: 10, Failures: 0, Errors: 0, Skipped: 0

6. Java 8 Add Days to Current Date Example- Summary

In this example, we demonstrated how to add days to the current date via the classes:LocalDate,LocalDateTime,ZonedDateTime,Instant, andClock.

7. Download the Source Code

This example consists of a Maven project to add days to the current date using Java 8 Date-Time API.

Download
You can download the full source code of this example here:Java 8 Add days to Current Date Example
Do you want to know how to develop your skillset to become aJava Rockstar?
Subscribe to our newsletter to start Rockingright now!
To get you started we give you our best selling eBooks forFREE!
1. JPA Mini Book
2. JVM Troubleshooting Guide
3. JUnit Tutorial for Unit Testing
4. Java Annotations Tutorial
5. Java Interview Questions
6. Spring Interview Questions
7. Android UI Design
and many more ....
I agree to theTerms andPrivacy Policy

Thank you!

We will contact you soon.

Photo of Mary ZhengMary ZhengOctober 30th, 2018Last Updated: February 25th, 2019
0 288 8 minutes read
Photo of Mary Zheng

Mary Zheng

Mary has graduated from Mechanical Engineering department at ShangHai JiaoTong University. She also holds a Master degree in Computer Science from Webster University. During her studies she has been involved with a large number of projects ranging from programming and software engineering. She works as a senior Software Engineer in the telecommunications sector where she acts as a leader and works with others to design, implement, and monitor the software solution.

    Related Articles

    Bipartite Graph

    Java not equal Example

    January 17th, 2020
    Bipartite Graph

    Java API Tutorial

    October 26th, 2020
    Bipartite Graph

    Java Struct Example

    January 8th, 2020
    Bipartite Graph

    Java Node Example

    November 20th, 2019
    Bipartite Graph

    Java Swing MVC Example

    January 26th, 2016
    Bipartite Graph

    How to call a method in Java

    December 26th, 2019
    Subscribe
    Notify of
    guest
    I agree to theTerms andPrivacy Policy
    The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.

    I agree to theTerms andPrivacy Policy
    The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.