Java中怎么比較兩個(gè)日期,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
10年積累的做網(wǎng)站、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有相山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Date 實(shí)現(xiàn)了 Comparable
如果兩個(gè)日期相等,則返回值為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
可以用 equals、after 和 before 方法比較日期。
如果兩個(gè)日期在同一時(shí)間點(diǎn),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
Calendar 類(lèi)也有 compareTo、equals、after 和 before 方法,工作方式與上面描述的 Date 類(lèi)的方法相同。因此,如果日期信息保存在 Calendar 類(lèi)中,則不需要提取日期來(lái)執(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
可以直接比較兩個(gè)日期的時(shí)間點(diǎn)。這是對(duì)兩種原始數(shù)據(jù)類(lèi)型的比較,因此可以使用 < 、 > 和 == 來(lái)比較。
在比較日期之前,必須使用前面創(chuàng)建的 Date 對(duì)象中的數(shù)據(jù)來(lái)創(chuàng)建長(zhǎ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() 來(lái)比較 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中怎么比較兩個(gè)日期的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!