java中⽐较字符串类型⽇期⼤⼩常⽤的⽅式
String类中提供了compareTo⽅法,原理是将字符串转成char[],从char[0]开始进⾏⽐较,如果两值不相等,则返回相减的结果。⼀般将结果与0相⽐,进⾏判断,并不关⼼返回的具体值:
String s1="2020-07-22";
String s2="2020-06-22";
System.out.println(s1pareTo(s2));//结果:1
System.out.println(s2pareTo(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(s1pareTo(s2));//结果:1
String s3="2020/06/22";string转date的方法
String s4="2020/06/22 13:01:15";
System.out.println(s3pareTo(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(nowDatepareTo(endDate));//结果:1
Date dat1=new Date();
Date dat2=new Date();
int va = dat1pareTo(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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论