用Java减去两个日期

时间:2012-10-23 19:21:45

标签: java date

  

可能重复:
  Calculating the Difference Between Two Java Date Instances

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

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。

3 个答案:

答案 0 :(得分:23)

编辑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();

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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.");