一、 String类中提供了compareTo方法,原理是将字符串转成char[],从char[0]开始进行比较,如果两值不相等,则返回相减的结果。一般将结果与0相比,进行判断,并不关心返回的具体值:
String s1="2022-09-22";
String s2="2022-08-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类日期通过SimpleDateFormat转化成Date类型,再使用Date的compareTo方法判断。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String now = "2022-09-09";
String end = "2021-09-09";
Date nowDate = sdf.parse(now);
Date endDate = sdf.parse(end);
System.out.println(nowDate.compareTo(endDate)); //结果:1
Date date01=new Date();
Date date02=new Date();
int va = date01.compareTo(date02);
如果 date01>date02 va=1;
date01=date02 va=0;
date01<date02 va=-1;
三、Date中提供了getTime方法,该方法的返回值是自1970-01-01 00:00:00到指定日期间的毫秒数,返回值类型为long。通过比较毫秒数大小,同样可以比较时间的大小。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long time1 = sdf.parse("2021-9-9").getTime();
long time2 = sdf.parse("2022-9-9").getTime();
System.out.println(time2>time1); //true
System.out.println(time1>time2); //false
个人比较推荐直接用String字符串比较即可,因为这样很方便,不用再做转换工作;