String類中提供了compareTo方法,原理是將字符串轉成char[],從char[0]開始進行比較,如果兩值不相等,則返回相減的結果。一般將結果與0相比,進行判斷,並不關心返回的具體值:
String s1="2020-07-22"; String s2="2020-06-22"; System.out.println(s1.compareTo(s2));//結果:1 System.out.println(s2.compareTo(s1));//結果:-1
相等時 結果是 0
這里有幾個點需要注意:
- 兩個日期格式必須相同,如 :2020-01-01與2020-05-05。如果格式不同,比如2020/01/01,則可能會影響最終結果。
- 在保證日期格式相同的基礎上,有沒有時分秒只會影響當年月日相同時的結果:
如
String s1="2020/06/22";
String s2="2020/05/22 13:01:15";
System.out.println(s1.compareTo(s2));//結果:1
String s3="2020/06/22";
String s4="2020/06/22 13:01:15";
System.out.println(s3.compareTo(s4));//結果:-9
SimpleDateFormat類
SimpleDateFormat類想必大家都不陌生,SimpleDateFormat可以通過parse方法,將一個日期類型的字符串,轉化成對應的Date型日期。我們就可以對Date進行操作。
- compaTo方法
Date同樣有compareTo的方法,可以將String通過SimpleDateFormat轉化成Date類型,再進行compareTo的判斷。當然,這樣會比較麻煩,適合一些特點需求。SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String now = "2020-01-01"; String end = "2019-01-01"; Date nowDate = sdf.parse(now); Date endDate = sdf.parse(end); System.out.println(nowDate.compareTo(endDate));//結果:1
Date dat1=new Date();
Date dat2=new Date();
int va = dat1.compareTo(dat2);
如果 dat1>dat2 va=1;
dat1=dat2 va=0;
dat1<dat2 va=-1;
- getTime方法
Date中提供了getTime方法,該方法的返回值是自1970-01-01 00:00:00到指定日期間的毫秒數,返回值類型為long。通過比較毫秒數大小,同樣可以比較時間的大小。SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); long time1 = sdf.parse("2019-1-1").getTime(); long time2 = sdf.parse("2020-1-1").getTime(); System.out.println(time1>time2);//false