Java 8 – How to subtract Date and Time fields from ZonedDateTime ?

In this article, we will learn how to subtract Date (day/week/month/year) & Time (nano/second/minute/hour) fields from ZonedDateTime using different methods provided in the Java 1.8 version

Subtracting Date & Time fields from ZonedDateTime :

  • Subtracting Date & Time fields from ZonedDateTime is quite simple using different methods provided
  • Use below methods to subtract Day or Week or Month or Year fields from ZonedDateTime
    1. minusDays() – Returns a copy of invoking ZonedDateTime with the specified number of days subtracted
    2. minusWeeks() – Returns a copy of invoking ZonedDateTime with the specified number of weeks subtracted
    3. minusMonths() – Returns a copy of invoking ZonedDateTime with the specified number of months subtracted
    4. minusYears() – Returns a copy of invoking ZonedDateTime with the specified number of years subtracted
  • Likewise, use below methods to subtract Nanosecond or Second or Minute or Hour fields from ZonedDateTime
    1. minusNanos() – Returns a copy of invoking ZonedDateTime with the specified number of nanoseconds subtracted
    2. minusSeconds() – Returns a copy of invoking ZonedDateTime with the specified number of seconds subtracted
    3. minusMinutes() – Returns a copy of invoking ZonedDateTime with the specified number of minutes subtracted
    4. minusHours() – Returns a copy of invoking ZonedDateTime with the specified number of hours subtracted
  • In the below illustration, we are going to do below operations with default ZonedDateTime,
    1. Subtract 5 Days from ZonedDateTime using minusDays() method
    2. Subtract 2 Weeks from ZonedDateTime using minusWeeks() method
    3. Subtract 3 Months from ZonedDateTime using minusMonths() method
    4. Subtract 1 Year from ZonedDateTime using minusYears() method
    5. Subtract 125 Nanos from ZonedDateTime using minusNanos() method
    6. Subtract 37 Seconds from ZonedDateTime using minusSeconds() method
    7. Subtract 19 Minutes from ZonedDateTime using minusMinutes() method
    8. Subtract 5 Hours from ZonedDateTime using minusHours() method
  • Finally, print ZonedDateTime after each operation to the console

SubtractFromZonedDateTime.java

package in.bench.resources.java8.zoneddatetime.examples;

import java.time.ZonedDateTime;

public class SubtractFromZonedDateTime {

	public static void main(String[] args) {

		// get Zoned Date/time
		ZonedDateTime zonedDateTime = ZonedDateTime.now();
		System.out.println("Zoned Date/time is = " + zonedDateTime);


		// 1. Subtracting Day/Week/Month/Year to ZonedDateTime
		System.out.println("\nSubtracting Day/Week/Month/Year from ZonedDateTime :- \n");


		// 1.1 subtract 5 days
		ZonedDateTime subtract_5_Days = zonedDateTime.minusDays(5);
		System.out.println("1. After subtracting 5 Days is = " 
				+ subtract_5_Days);


		// 1.2 subtract 2 weeks
		ZonedDateTime subtract_2_Weeks = zonedDateTime.minusWeeks(2);
		System.out.println("2. After subtracting 2 Weeks is = " 
				+ subtract_2_Weeks);


		// 1.3 subtract 3 months
		ZonedDateTime subtract_3_Months = zonedDateTime.minusMonths(3);
		System.out.println("3. After subtracting 3 Months is = " 
				+ subtract_3_Months);


		// 1.4 subtract 1 year
		ZonedDateTime subtract_1_Year = zonedDateTime.minusYears(1);
		System.out.println("4. After subtracting 1 Year is = " 
				+ subtract_1_Year);



		// 2. Subtracting Nano/Second/Minute/Hour from ZonedDateTime
		System.out.println("\nSubtracting Nano/Second/Minute/Hour from ZonedDateTime :- \n");


		// 2.1 subtract 125 NanoSeconds
		ZonedDateTime sub_125_Nanos = zonedDateTime.minusNanos(125);
		System.out.println("1. After subtracting 125 Nanoseconds is = " 
				+ sub_125_Nanos);


		// 2.2 subtract 37 Seconds
		ZonedDateTime sub_37_Seconds = zonedDateTime.minusSeconds(37);
		System.out.println("2. After subtracting 37 Seconds is = " 
				+ sub_37_Seconds);


		// 2.3 subtract 19 Minutes
		ZonedDateTime sub_19_Minutes = zonedDateTime.minusMinutes(19);
		System.out.println("3. After subtracting 19 Minutes is = " 
				+ sub_19_Minutes);


		// 2.4 subtract 5 Hours
		ZonedDateTime sub_5_Hours = zonedDateTime.minusHours(5);
		System.out.print("4. After subtracting 5 Hours is = " 
				+ sub_5_Hours);
	}
}

Output:

Zoned Date/time is = 2022-08-14T19:48:40.492367300+05:30[Asia/Calcutta]

Subtracting Day/Week/Month/Year from ZonedDateTime :- 

1. After subtracting 5 Days is = 2022-08-09T19:48:40.492367300+05:30[Asia/Calcutta]
2. After subtracting 2 Weeks is = 2022-07-31T19:48:40.492367300+05:30[Asia/Calcutta]
3. After subtracting 3 Months is = 2022-05-14T19:48:40.492367300+05:30[Asia/Calcutta]
4. After subtracting 1 Year is = 2021-08-14T19:48:40.492367300+05:30[Asia/Calcutta]

Subtracting Nano/Second/Minute/Hour from ZonedDateTime :- 

1. After subtracting 125 Nanoseconds is = 2022-08-14T19:48:40.492367175+05:30[Asia/Calcutta]
2. After subtracting 37 Seconds is = 2022-08-14T19:48:03.492367300+05:30[Asia/Calcutta]
3. After subtracting 19 Minutes is = 2022-08-14T19:29:40.492367300+05:30[Asia/Calcutta]
4. After subtracting 5 Hours is = 2022-08-14T14:48:40.492367300+05:30[Asia/Calcutta]

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to alter Date, Time and Zone fields of ZonedDateTime ?
Java 8 – How to add Date and Time fields to ZonedDateTime ?