问题
我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子。我也知道JodaTime库,但我想要一种没有外部库的工作方式。
功能需要抱怨这些限制:
- 防止日期保存时间错误
- 输入是两个Date的对象(没有时间,我知道localdatetime,但我需要做日期实例)
#1 热门回答(226 赞)
如果你想要逻辑日历日,请使用296830392中的DAYS.between()
方法:
LocalDate dateBefore;
LocalDate dateAfter;
long daysBetween = DAYS.between(dateBefore, dateAfter);
如果你想要24小时的日子(aduration),你可以改用Duration
class:
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));