31

可能的重复:
计算两个 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。

4

3 回答 3

32

编辑 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();
于 2012-10-23T19:44:44.807 回答
10

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

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

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

于 2012-10-23T19:42:13.500 回答
6
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.");
于 2012-10-23T19:44:25.153 回答