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
这里有几个点需要注意:
- 两个日期格式必须相同,如 :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