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);
这样就可以了…仅供参考,有问题欢迎指出.谢谢
上一篇:
通过多线程提高代码的执行效率例子