HOWTO · Java

如何在 Java 中比較兩個日期

本教程介紹瞭如何使用多種方法(例如使用 before,after,equals 和 compareTo 方法)比較 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