溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中怎么比較兩個日期

發(fā)布時間:2021-06-18 17:34:47 來源:億速云 閱讀:173 作者:Leah 欄目:大數(shù)據(jù)

Java中怎么比較兩個日期,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

Date.compareTo()

Date 實現(xiàn)了 Comparable<Date>,因此兩個日期可以直接用 compareTo 方法進行比較。

  • 如果兩個日期相等,則返回值為0。

  • 如果 Date1 在 Date2 參數(shù)之后,則返回值大于0。

  • 如果 Date1 在 Date2 參數(shù)之前,則返回值小于0。

package com.wupx.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse("2019-10-01");
        Date date2 = sdf.parse("2019-10-17");

        System.out.println("date1 : " + sdf.format(date1));
        System.out.println("date2 : " + sdf.format(date2));

        if (date1.compareTo(date2) > 0) {
            System.out.println("Date1 is after Date2");
        } else if (date1.compareTo(date2) < 0) {
            System.out.println("Date1 is before Date2");
        } else if (date1.compareTo(date2) == 0) {
            System.out.println("Date1 is equal to Date2");
        } else {
            System.out.println("咋到這的?");
        }

    }

}

輸出結(jié)果

date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2

Date.before() Date.after() Date.equals()

可以用 equals、after 和 before 方法比較日期。

  • 如果兩個日期在同一時間點,equals方法將返回true。

  • 如果 date1 在 date2 之前,before 返回 true,否則返回 false。

  • 如果 date2 在 date1 之后,after 返回 true,否則返回 false。

package com.wupx.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo2 {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse("2019-10-01");
        Date date2 = sdf.parse("2019-10-17");

        System.out.println("date1 : " + sdf.format(date1));
        System.out.println("date2 : " + sdf.format(date2));
        
        if (date1.after(date2)) {
            System.out.println("Date1 is after Date2");
        }

        if (date1.before(date2)) {
            System.out.println("Date1 is before Date2");
        }

        if (date1.equals(date2)) {
            System.out.println("Date1 is equal Date2");
        }
    }
}

輸出結(jié)果

date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2

Calender.before() Calender.after() Calender.equals()

Calendar 類也有 compareTo、equals、after 和 before 方法,工作方式與上面描述的 Date 類的方法相同。因此,如果日期信息保存在 Calendar 類中,則不需要提取日期來執(zhí)行比較。

package com.wupx.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateDemo3 {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse("2009-12-31");
        Date date2 = sdf.parse("2010-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 is after Date2");
        }

        if (cal1.before(cal2)) {
            System.out.println("Date1 is before Date2");
        }

        if (cal1.equals(cal2)) {
            System.out.println("Date1 is equal Date2");
        }
    }
}

輸出結(jié)果

date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2

getTime()

可以直接比較兩個日期的時間點。這是對兩種原始數(shù)據(jù)類型的比較,因此可以使用 < 、 > 和 == 來比較。

在比較日期之前,必須使用前面創(chuàng)建的 Date 對象中的數(shù)據(jù)來創(chuàng)建長整型。

package com.wupx.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo4 {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date date1 = sdf.parse("2019-10-01");
        Date date2 = sdf.parse("2019-10-17");
        
        System.out.println("date1 : " + sdf.format(date1));
        System.out.println("date2 : " + sdf.format(date2));

        long time1 = date1.getTime();
        long time2 = date2.getTime();

        if (time1 > time2) {
            System.out.println("Date1 is after Date2");
        } else if (time1 < time2) {
            System.out.println("Date1 is before Date2");
        } else if (time1 == time2) {
            System.out.println("Date1 is equal to Date2");
        } else {
            System.out.println("咋到這的?");
        }
    }
}

輸出結(jié)果

date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2

Java 8 中的 isBefore() isAfter() isEqual() compareTo()

在 Java 8 中,可以使用新的 isBefore()、isAfter()、isEqual() 以及 compareTo() 來比較 LocalDate、LocalTime 和 LocalDateTime。

package com.wupx.date;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateDemo5 {

    public static void main(String[] args) {

        DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate date1 = LocalDate.of(2019, 10, 01);
        LocalDate date2 = LocalDate.of(2019, 10, 17);

        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 is after Date2");
        }

        if (date1.isBefore(date2)) {
            System.out.println("Date1 is before Date2");
        }

        if (date1.isEqual(date2)) {
            System.out.println("Date1 is equal Date2");
        }

        System.out.println("CompareTo...");
        if (date1.compareTo(date2) > 0) {
            System.out.println("Date1 is after Date2");
        } else if (date1.compareTo(date2) < 0) {
            System.out.println("Date1 is before Date2");
        } else if (date1.compareTo(date2) == 0) {
            System.out.println("Date1 is equal to Date2");
        } else {
            System.out.println("咋到這的?");
        }
    }
}

輸出結(jié)果

date1 : 2019-10-01
date2 : 2019-10-17
Is...
Date1 is before Date2
CompareTo...
Date1 is before Date2

看完上述內(nèi)容,你們掌握 Java中怎么比較兩個日期的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI