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

       

posted @ 2020-11-13 15:20  Samuel-Leung  阅读(8858)  评论(0编辑  收藏  举报