如何在 Java 中比較兩個日期

  1. before() 方法比較 Java 中的兩個日期
  2. after() 方法來比較 Java 中的兩個日期
  3. equals() 方法比較 Java 中的兩個日期
  4. 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("dd-MM-yyyy");
            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
comments powered by Disqus