java中 比較 字符串類型日期大小 常用的方式


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

這里有幾個點需要注意:

  1. 兩個日期格式必須相同,如 :2020-01-01與2020-05-05。如果格式不同,比如2020/01/01,則可能會影響最終結果。
  2. 在保證日期格式相同的基礎上,有沒有時分秒只會影響當年月日相同時的結果:

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進行操作。

    1. 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;

       
    2. 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

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM