Add or Subtract Days, Months & Years to Date in Java

Java examples to add or subtract days, months or years from a given date using various date-time classes. If your requirement is to add or subtract only the business days then read the linked article.

1. Add or Subtract Days, Months, Years to Date since Java 8

This recommended approach if we are using JDK 1.8 or later.

New java.time classes LocalDate, LocalDateTime and ZonedDateTime have following plus methods to add days to a date.

  • plusDays(long n) – adds n days to date.
  • plusWeeks(long n) – adds n weeks to date.
  • plusMonths(long n) – adds n months to date.
  • plusYears(long n) – adds n years to date.

Similarly, use the following minus methods to subtract days from a date.

  • minusDays(long n) – subtracts n days from date.
  • minusWeeks(long n) – subtracts n weeks from date.
  • minusMonths(long n) – subtracts n months from date.
  • minusYears(long n) – subtracts n years from date.

Before returning the modified date, these methods modify the other date fields as well to ensure that the result date is a valid date.

These methods throw DateTimeException if the result exceeds the supported date range.

//1. Add and substract 1 day from LocalDate

LocalDate today =  LocalDate.now();             //Today
LocalDate tomorrow = today.plusDays(1);     //Plus 1 day
LocalDate yesterday = today.minusDays(1);   //Minus 1 day
 
//2. Add and substract 1 month from LocalDateTime
 
LocalDateTime now =  LocalDateTime.now();     //Current Date and Time
LocalDateTime sameDayNextMonth = now.plusMonths(1);       //2018-08-14
LocalDateTime sameDayLastMonth = now.minusMonths(1);      //2018-06-14

//3. Add and substract 1 year from LocalDateTime
 
LocalDateTime sameDayNextYear = now.plusYears(1);     //2019-07-14
LocalDateTime sameDayLastYear = now.minusYears(1);    //2017-07-14

2. Add or Subtract Days from java.util.Date

Till Java 7, the only good way to add days to Date was using Calendar class.

The calendar.add(int field, int amount) method takes two arguments, i.e., field type and the field value. We can use this method to add days, months or any time unit in the underlying Date class.

  • To add a time unit, pass a positive number in the method.
  • To subtract a time unit, pass a negative number in the method.
Date today = new Date();
System.out.println(today);      
 
Calendar cal = Calendar.getInstance();
cal.setTime(today);
 
// Adding time
cal.add(Calendar.YEAR, 2);
cal.add(Calendar.MONTH, 2);
cal.add(Calendar.DATE, 2); 
cal.add(Calendar.DAY_OF_MONTH, 2);

// Subtracting time
cal.add(Calendar.YEAR, -3);
cal.add(Calendar.MONTH, -3);
cal.add(Calendar.DATE, -3); 
cal.add(Calendar.DAY_OF_MONTH, -3);

// convert calendar to date
Date modifiedDate = cal.getTime();
System.out.println(modifiedDate);       

Happy Learning !!

Sourcecode Download

Was this post helpful?

Join 7000+ Awesome Developers

Get the latest updates from industry, awesome resources, blog updates and much more.

* We do not spam !!

Leave a Comment

HowToDoInJava

A blog about Java and related technologies, the best practices, algorithms, and interview questions.