Compare ZonedDateTime Objects in Java

Compare ZonedDateTime Objects in Java

ZonedDateTime class provides below APIs to compare ZonedDateTime objects in Java.
Methods inherited from interface java.time.chrono.ChronoZonedDateTime
  • default boolean isAfter(ChronoZonedDateTime<?> other) - Checks if the instant of this date-time is after that of the specified date-time.
  • default boolean isBefore(ChronoZonedDateTime<?> other) - Checks if the instant of this date-time is before that of the specified date-time.
  • default boolean isEqual(ChronoZonedDateTime<?> other) - Checks if the instant of this date-time is equal to that of the specified date-time.
  • default int compareTo(ChronoZonedDateTime<?> other) - Compares this date-time to another date-time, including the chronology.
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

/**
 * Program to demonstrate ZonedDateTime Class APIs.
 * @author javaguides.net
 *
 */
public class ZonedDateTimeExample {
 
    public static void main(String[] args) {
        compareZonedDateTimeObjects();
    }

    private static void compareZonedDateTimeObjects() {
        LocalDateTime dateTime = LocalDateTime.now();

        ZonedDateTime dt1 = ZonedDateTime.of(dateTime, ZoneId.of("America/New_York"));
        ZonedDateTime dt2 = ZonedDateTime.of(dateTime, ZoneId.of("America/New_York"));
        ZonedDateTime dt3 = ZonedDateTime.of(dateTime, ZoneId.of("UTC"));
  
        // Using isEqual()
        if (dt1.isEqual(dt2)) {
             System.out.println("dateTime1 and dateTime2 are equal.");
        } else {
             System.out.println("dateTime1 and dateTime2 are not equal.");
        }

        // Using compareTo()
        if (dt1.compareTo(dt2) == 0) {
            System.out.println("dateTime1 and dateTime2 are equal.");
        } else {
            System.out.println("dateTime1 and dateTime2 are not equal.");
        }

         // Using isAfter()
        if (dt2.isAfter(dt3)) {
           System.out.println("dateTime2 is after dateTime3");
        }   

        // Using isBefore()
        if (dt3.isBefore(dt1)) {
            System.out.println("dateTime3 is before dateTime1");
        }
    }
}
Output:
dateTime1 and dateTime2 are equal.
dateTime1 and dateTime2 are equal.
dateTime2 is after dateTime3
dateTime3 is before dateTime1

Reference

Comments