Java 8 – How to check whether an OffsetDateTime is Before another OffsetDateTime ?

In this article, we will learn how to check whether one OffsetDateTime is Before another OffsetDateTime using OffsetDateTime.isBefore() method provided in Java 1.8 version

Compare two OffsetDateTime using isBefore() method :

  • If there are two OffsetDateTime and the requirement is to check whether one OffsetDateTime is before another OffsetDateTime, then isBefore() method can be used
    • isBefore(OffsetDateTime) – checks if the invoking OffsetDateTime is before the specified OffsetDateTime
  • Comparison results –
    1. Returns true, if invoking OffsetDateTime is before the specified OffsetDateTime
    2. Returns false, if invoking OffsetDateTime is not before the specified OffsetDateTime
    3. Always returns false for self comparing OffsetDateTime
  • Lets see an example for comparing two OffsetDateTime using isBefore() method

CheckOffsetDateTimeIsBeforeAnotherOffsetDateTime.java

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

import java.time.OffsetDateTime;
import java.time.ZoneOffset;

public class CheckOffsetDateTimeIsBeforeAnotherOffsetDateTime {

	public static void main(String[] args) {

		// 1. get Local Offset Date/time
		ZoneOffset zoneOffsetLocal = ZoneOffset.of("+05:30");
		OffsetDateTime currentOffsetDateTime = OffsetDateTime
				.of(2022, 8, 15, 12, 30, 30, 500, zoneOffsetLocal);
		System.out.println("1. Current Offset Date/time is = " + currentOffsetDateTime);


		// 2. form Past Offset Date/time
		ZoneOffset zoneOffsetPast = ZoneOffset.of("+10:30");
		OffsetDateTime pastOffsetDateTime = OffsetDateTime
				.of(2022, 8, 15, 12, 30, 30, 500, zoneOffsetPast);
		System.out.println("2. Past Offset Date/time is = " + pastOffsetDateTime);


		// 3. form Future Offset Date/time
		ZoneOffset zoneOffsetFuture = ZoneOffset.of("-09:30");
		OffsetDateTime futureOffsetDateTime = OffsetDateTime
				.of(2022, 8, 15, 12, 30, 30, 500, zoneOffsetFuture);
		System.out.println("3. Future Offset Date/time is = " + futureOffsetDateTime);



		// 4. isBefore() - OffsetDateTime comparison
		System.out.println("\n\n4. Comparing 2 OffsetDateTime using isBefore() method :- \n");


		// 4.1 check whether currentOffsetDateTime isBefore futureOffsetDateTime
		boolean isBefore1 = currentOffsetDateTime.isBefore(futureOffsetDateTime);
		System.out.println("4.1 Current Offset Date/time (" + currentOffsetDateTime 
				+ ") \n\t\t is Before Future Offset Date/time (" + futureOffsetDateTime + ") ? "
				+ isBefore1);


		// 4.2 check whether currentOffsetDateTime isBefore pastOffsetDateTime
		boolean isBefore2 = currentOffsetDateTime.isBefore(pastOffsetDateTime);
		System.out.println("4.2 Current Offset Date/time (" + currentOffsetDateTime 
				+ ") \n\t\t is Before Past Offset Date/time (" + pastOffsetDateTime + ") ? "
				+ isBefore2);


		// 4.3 check whether pastOffsetDateTime isBefore currentOffsetDateTime 
		boolean isBefore3 = pastOffsetDateTime.isBefore(currentOffsetDateTime);
		System.out.println("4.3 Past Offset Date/time (" + pastOffsetDateTime 
				+ ") \n\t\t is Before Current Offset Date/time (" + currentOffsetDateTime + ") ? "
				+ isBefore3);


		// 4.4 check whether pastOffsetDateTime isBefore futureOffsetDateTime 
		boolean isBefore4 = pastOffsetDateTime.isBefore(futureOffsetDateTime);
		System.out.println("4.4 Past Offset Date/time (" + pastOffsetDateTime 
				+ ") \n\t\t is Before Future Offset Date/time (" + futureOffsetDateTime + ") ? "
				+ isBefore4);


		// 4.5 check whether futureOffsetDateTime isBefore currentOffsetDateTime 
		boolean isBefore5 = futureOffsetDateTime.isBefore(currentOffsetDateTime);
		System.out.println("4.5 Future Offset Date/time (" + futureOffsetDateTime 
				+ ") \n\t\t is Before Current Offset Date/time (" + currentOffsetDateTime + ") ? "
				+ isBefore5);


		// 4.6 check whether futureOffsetDateTime isBefore pastOffsetDateTime 
		boolean isBefore6 = futureOffsetDateTime.isBefore(currentOffsetDateTime);
		System.out.println("4.6 Future Offset Date/time (" + futureOffsetDateTime 
				+ ") \n\t\t is Before Past Offset Date/time (" + pastOffsetDateTime + ") ? "
				+ isBefore6);



		// 5. isBefore() - self OffsetDateTime comparison
		System.out.println("\n\n5. Self comparing OffsetDateTime using isBefore() method :- \n");


		// 5.1 check whether todaysLocalDate isBefore todaysLocalDate
		boolean isBefore7 = currentOffsetDateTime.isBefore(currentOffsetDateTime);
		System.out.println("5.1 Current Offset Date/time (" + currentOffsetDateTime 
				+ ") \n\t\t is Before Current Offset Date/time (" + currentOffsetDateTime + ") ? "
				+ isBefore7);


		// 5.2 check whether pastLocalDate isBefore pastLocalDate
		boolean isBefore8 = pastOffsetDateTime.isBefore(pastOffsetDateTime);
		System.out.println("5.2 Past Offset Date/time (" + pastOffsetDateTime 
				+ ") \n\t\t is Before Past Offset Date/time (" + pastOffsetDateTime + ") ? "
				+ isBefore8);


		// 5.3 check whether futureLocalDate isBefore futureLocalDate
		boolean isBefore9 = futureOffsetDateTime.isBefore(futureOffsetDateTime);
		System.out.print("5.3 Future Offset Date/time (" + futureOffsetDateTime 
				+ ") \n\t\t is Before Offset Future Date/time (" + futureOffsetDateTime + ") ? "
				+ isBefore9);
	}
}

Output:

1. Current Offset Date/time is = 2022-08-15T12:30:30.000000500+05:30
2. Past Offset Date/time is = 2022-08-15T12:30:30.000000500+10:30
3. Future Offset Date/time is = 2022-08-15T12:30:30.000000500-09:30


4. Comparing 2 OffsetDateTime using isBefore() method :- 

4.1 Current Offset Date/time (2022-08-15T12:30:30.000000500+05:30) 
		 is Before Future Offset Date/time (2022-08-15T12:30:30.000000500-09:30) ? true
4.2 Current Offset Date/time (2022-08-15T12:30:30.000000500+05:30) 
		 is Before Past Offset Date/time (2022-08-15T12:30:30.000000500+10:30) ? false
4.3 Past Offset Date/time (2022-08-15T12:30:30.000000500+10:30) 
		 is Before Current Offset Date/time (2022-08-15T12:30:30.000000500+05:30) ? true
4.4 Past Offset Date/time (2022-08-15T12:30:30.000000500+10:30) 
		 is Before Future Offset Date/time (2022-08-15T12:30:30.000000500-09:30) ? true
4.5 Future Offset Date/time (2022-08-15T12:30:30.000000500-09:30) 
		 is Before Current Offset Date/time (2022-08-15T12:30:30.000000500+05:30) ? false
4.6 Future Offset Date/time (2022-08-15T12:30:30.000000500-09:30) 
		 is Before Past Offset Date/time (2022-08-15T12:30:30.000000500+10:30) ? false


5. Self comparing OffsetDateTime using isBefore() method :- 

5.1 Current Offset Date/time (2022-08-15T12:30:30.000000500+05:30) 
		 is Before Current Offset Date/time (2022-08-15T12:30:30.000000500+05:30) ? false
5.2 Past Offset Date/time (2022-08-15T12:30:30.000000500+10:30) 
		 is Before Past Offset Date/time (2022-08-15T12:30:30.000000500+10:30) ? false
5.3 Future Offset Date/time (2022-08-15T12:30:30.000000500-09:30) 
		 is Before Offset Future Date/time (2022-08-15T12:30:30.000000500-09:30) ? false

Related Articles:

References:

Happy Coding !!
Happy Learning !!

Java 8 – How to check whether an OffsetDateTime is After another OffsetDateTime ?
Java 8 – How to alter Date, Time and Offset fields of OffsetDateTime ?