用Java减去两个日期

可能重复:
计算两个Java日期实例之间的差异

我知道这可能是一个重复的线程。 但我试图找出一种计算两个日期之间差异的方法。 从jquery开始,日期字符串的格式为'yyyy-mm-dd' 。 我把它读作一个字符串并像这样转换为java Date

 Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.getParameter(date1)); Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.getParameter(date2)); 

我想计算这两个日期之间的天数差异。

注意:我不能使用第三方API作为需要审核的API。

编辑2018-05-28我已将示例更改为使用Java 8的Time API:

 LocalDate d1 = LocalDate.parse("2018-05-26", DateTimeFormatter.ISO_LOCAL_DATE); LocalDate d2 = LocalDate.parse("2018-05-28", DateTimeFormatter.ISO_LOCAL_DATE); Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay()); long diffDays = diff.toDays(); 

假设您受限于使用Date ,您可以执行以下操作:

Date diff = new Date(d2.getTime() - d1.getTime());

在这里,您计算自“纪元”以来的毫秒差异,并在距离纪元偏移的位置创建新的Date对象。 像其他人一样说:重复问题中的答案可能是更好的选择(如果你没有被约束到Date )。

 Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request. getParameter(date1)); Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request. getParameter(date2)); long diff = d2.getTime() - d1.getTime(); System.out.println("Difference between " + d1 + " and "+ d2+" is " + (diff / (1000 * 60 * 60 * 24)) + " days.");