在 Java 中有多種方法能夠比較日期,日期在計算機內部表示爲(long型)時間點——自1970年1月1日以來通過的毫秒數。在Java中,Date是一個對象,包含多個用於比較的方法,任何比較兩個日期的方法本質上都會比較日期的時間。java
本文主要介紹如下五種方式:spa
Date 實現了 Comparable
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("咋到這的?");
}
}
}複製代碼
輸出結果code
date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2複製代碼
能夠用 equals、after 和 before 方法比較日期。orm
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");
}
}
}
複製代碼
輸出結果對象
date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2複製代碼
Calendar 類也有 compareTo、equals、after 和 before 方法,工做方式與上面描述的 Date 類的方法相同。所以,若是日期信息保存在 Calendar 類中,則不須要提取日期來執行比較。blog
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");
}
}
}複製代碼
輸出結果get
date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2複製代碼
能夠直接比較兩個日期的時間點。這是對兩種原始數據類型的比較,所以能夠使用 < 、 > 和 == 來比較。博客
在比較日期以前,必須使用前面建立的 Date 對象中的數據來建立長整型。it
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("咋到這的?");
}
}
}複製代碼
輸出結果
date1 : 2019-10-01
date2 : 2019-10-17
Date1 is before Date2複製代碼
在 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("咋到這的?");
}
}
}複製代碼
輸出結果
date1 : 2019-10-01
date2 : 2019-10-17
Is...
Date1 is before Date2
CompareTo...
Date1 is before Date2複製代碼
本文主要講解了在 Java 中比較日期的幾種經常使用方法,能夠本身實際操做一下。
參考
https://blog.csdn.net/qq_27276045/article/details/100792621
本文由博客一文多發平臺 OpenWrite 發佈!