1. Date.com pareTo ()
Java.util.date provides the classic method compareTo () for comparing two dates in Java.
- If two dates are equal, the return value is 0.
- If Date follows the Date argument, the return value is greater than 0.
- If Date precedes the Date argument, the return value is less than 0.
@Testvoid testDateCompare() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("2009-12-31"); Date date2 = sdf.parse("2019-01-31"); System.out.println("date1 : " + sdf.format(date1)); System.out.println("date2 : " + sdf.format(date2)); if (date1.compareTo(date2) > 0) { System.out.println("Date1 time after Date2"); } else if (date1.compareTo(date2) < 0) { System.out.println("Date1 time before Date2"); } else if (date1.compareTo(date2) == 0) { System.out.println("Date1 time equals Date2"); } else { System.out.println("How did the program get here? Normally not."); }}Copy the code
Output result:
Date1:2009-12-31date2:2019-01-31 date1 The time is earlier than date2Copy the code
2. Date.before (), date.after () and date.equals ()
A semantically friendly way to compare two java.util.dates
@Testvoid testDateCompare2() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("2009-12-31"); Date date2 = sdf.parse("2019-01-31"); System.out.println("date1 : " + sdf.format(date1)); System.out.println("date2 : " + sdf.format(date2)); if (date1.after(date2)) { System.out.println("Date1 time after Date2"); } if (date1.before(date2)) { System.out.println("Date1 time before Date2"); } if (date1.equals(date2)) { System.out.println("Date1 time equals Date2"); }}Copy the code
The output
Date1:2009-12-31date2:2019-01-31 date1 The time is earlier than date2Copy the code
3. Calender.before (), calender.after () and calender.equals ()
Compare two Date dates using java.util.Calendar
@Testvoid testDateCompare3() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("2009-12-31"); Date date2 = sdf.parse("2019-01-31"); System.out.println("date1 : " + sdf.format(date1)); System.out.println("date2 : " + sdf.format(date2)); Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setTime(date1); cal2.setTime(date2); if (cal1.after(cal2)) { System.out.println("Date1 time after Date2"); } if (cal1.before(cal2)) { System.out.println("Date1 time before Date2"); } if (cal1.equals(cal2)) { System.out.println("Date1 time equals Date2"); }}Copy the code
Output result:
Date1:2009-12-31date2:2019-01-31 date1 The time is earlier than date2Copy the code
Java 8 date comparison method
In Java 8, you can use the new isBefore (), isAfter (), isEqual (), and compareTo () to compare LocalDate, LocalTime, and LocalDateTime. The following example compares two java.time.localdates
@Testvoid testDateCompare4() throws ParseException { DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date1 = LocalDate.of(2009, 12, 31); LocalDate date2 = LocalDate.of(2019, 1, 31); System.out.println("date1 : " + sdf.format(date1)); System.out.println("date2 : " + sdf.format(date2)); System.out.println("Is..."); if (date1.isAfter(date2)) { System.out.println("Date1 time after Date2"); } if (date1.isBefore(date2)) { System.out.println("Date1 time before Date2"); } if (date1.isEqual(date2)) { System.out.println("Date1 time equals Date2"); }}Copy the code
The output
date1 : 2009-12-31date2 : 2019-01-31Is... Date1 Indicates the time before Date2Copy the code