Java:计算两个时间之间相隔几天

传统的计算两个时间之间相隔的天数,一般是将两个时间转化为Date对象,然后去毫秒数,进行相减,再转化为天数. 这种方法使用起来比较方便,也便于理解,但是其中还是存在一点问题的 如果两个时间相差较大,这种方法非常的方便,代码如下

String d1="2020-10-02";
String d2="2020-10-07";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = simpleDateFormat.parse(d1);
Date date2 = simpleDateFormat.parse(d2);
int l = (int) (date2.getTime() - date1.getTime()) / (1000 * 24 * 60 * 60);
System.out.println("两个时间相差" + l + "天");

结果很显然

但是!!如果也有可能出现如下情况,如

Date date1 = new Date();
 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
 String d = "2020-10-07";
 Date date2 = simpleDateFormat.parse(d);
 int l = (int) (date2.getTime() - date1.getTime()) / (1000 * 24 * 60 * 60);
 System.out.println("date1的时间是"+date1);
 System.out.println("两个时间相差" + l + "天");

时间竟然对不上了.2020年10月1号23点39到2020年10月7号,相差5天,这不是我想要的结果. 在这种情况下,我们需要换个方法解决问题;

LocalDate date1= LocalDate.now();//获取当前时间
            String d = "2020-10-07";
            LocalDate date2= LocalDate.parse(d);//解析指定时间
            Period between = Period.between(date1, date2);//计算
            int days = between.getDays();
            System.out.println("date1的时间是"+date1);
            System.out.println("两个时间相差" + days  + "天");

这才是我想要的结果.

// 发现问题了,不好意思

Period.between(date1, date2).getDays();

获取的是相差时间的天数,如果相差1个月25天,这样得到的就只是25,也不符合.应该使用

ChronoUnit.DAYS.between(date1, date2);

这样就可以了…仅供参考,有问题欢迎指出.谢谢

经验分享 程序员 微信小程序 职场和发展