计算Java 8中两个日期之间的天数

问题

我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子。我也知道JodaTime库,但我想要一种没有外部库的工作方式。

功能需要抱怨这些限制:

  • 防止日期保存时间错误
  • 输入是两个Date的对象(没有时间,我知道localdatetime,但我需要做日期实例)

#1 热门回答(226 赞)

如果你想要逻辑日历日,请使用296830392中的DAYS.between()方法:

LocalDate dateBefore;
LocalDate dateAfter;
long daysBetween = DAYS.between(dateBefore, dateAfter);

如果你想要24小时的日子(aduration),你可以改用Durationclass:

LocalDate today = LocalDate.now()
LocalDate yesterday = today.minusDays(1);
// Duration oneDay = Duration.between(today, yesterday); // throws an exception
Duration.between(today.atStartOfDay(), yesterday.atStartOfDay()).toDays() // another option

有关更多信息,请参阅this document(以及其他文档:Oracle的Java 8)。


#2 热门回答(75 赞)

基于VGR的评论,你可以使用以下内容:

ChronoUnit.DAYS.between(firstDate, secondDate)

#3 热门回答(21 赞)

你可以用until()

LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);
LocalDate christmas = LocalDate.of(2014, Month.DECEMBER, 25);

System.out.println("Until christmas: " + independenceDay.until(christmas));
System.out.println("Until christmas (with crono): " + independenceDay.until(christmas, ChronoUnit.DAYS));