如何在 Java 中比较两个日期

Asad Riaz 2023年10月12日
  1. before() 方法比较 Java 中的两个日期
  2. after() 方法来比较 Java 中的两个日期
  3. equals() 方法比较 Java 中的两个日期
  4. compareTo() 方法来比较 Java 中的两个日期
如何在 Java 中比较两个日期

在本教程中,我们将学习多种方法来比较 Java 中的日期。为了获得理想的结果,我们可以用以下的方法,即 before()after()equals()compareTo()

before() 方法比较 Java 中的两个日期

第一种方法是 Java Date 类中的 before() 方法,该方法执行日期 Date 对象与给定的 Date 即时比较。当日期对象早于给定的日期对象时,它将返回真。

示例代码:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
      Date date1 = dateFormat.parse("2019-09-16");
      Date date2 = dateFormat.parse("2020-01-25");
      System.out.println("Date-1: " + dateFormat.format(date1));
      System.out.println("Date-2: " + dateFormat.format(date2));
      if (date1.before(date2)) {
        System.out.println("Date-1 is before Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

输出:

Date-1: 2019-09-16
Date-2: 2020-01-25
Date-1 is before Date-2

after() 方法来比较 Java 中的两个日期

另一种实现这种比较的方法是通过在 Java Date 类中使用 after() 方法。此方法与上述之前方法相反,并且当日期对象晚于给定的日期对象时返回 true

示例代码:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd");
      Date date1 = sdformat.parse("2020-01-25");
      Date date2 = sdformat.parse("2019-09-16");
      System.out.println("Date-1: " + sdformat.format(date1));
      System.out.println("Date-2: " + sdformat.format(date2));
      if (date1.after(date2)) {
        System.out.println("Date-1 is after Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

输出:

Date-1: 2020-01-25
Date-2: 2019-09-16
Date-1 is after Date-2

equals() 方法比较 Java 中的两个日期

另一种方法是在 Java Date 类中使用 equals() 方法。如果两个日期一样的话,则返回 true

示例代码:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-dd-mm");
      Date date1 = sdformat.parse("2020-01-25");
      Date date2 = sdformat.parse("2020-01-25");
      System.out.println("Date-1: " + sdformat.format(date1));
      System.out.println("Date-2: " + sdformat.format(date2));
      if (date1.equals(date2)) {
        System.out.println("Date-1 is same as Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

输出:

Date-1: 2020-01-25
Date-2: 2020-01-25
Date-1 is same as Date-2

compareTo() 方法来比较 Java 中的两个日期

最后一种方法是 Java Date 类中的 compareTo() 方法。它比较两个日期并根据比较结果返回不同的值。

  • 如果参数日期等于日期对象,则返回 0
  • 如果 Date 对象在参数日期之后,则返回正值
  • 如果 Date 对象早于参数日期,则返回负数

示例代码:

// java 1.8
package simpletesting;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd");
      Date date1 = sdformat.parse("2020-01-25");
      Date date2 = sdformat.parse("2020-01-23");
      System.out.println("Date-1: " + sdformat.format(date1));
      System.out.println("Date-2: " + sdformat.format(date2));
      if (date1.compareTo(date2) > 0) {
        System.out.println("Date-1 is after Date-2");
      } else if (date1.compareTo(date2) < 0) {
        System.out.println("Date-1 is before Date-2");
      } else if (date1.compareTo(date2) == 0) {
        System.out.println("Date-1 is same as Date-2");
      }
    } catch (ParseException ex) {
    }
  }
}

输出:

Date-1: 2020-01-25
Date-2: 2020-01-23
Date-1 is after Date-2

相关文章 - Java DateTime