以下演示的是获取日期之间的所有日期列表,如果要获取两个时间之间的时间列表,只需要将 LocalDate 换成 LocalTime 或者 LocalDateTime,相应的方法也改为基于小时或分钟进行加减即可,对于获取两个日期之间的所有日期,Java8、9提供了不同的方法,具体代码实现如下:
Java9
LocalDate startDate = LocalDate.now();
LocalDate endDate = startDate.plusMonths(2);
List<LocalDate> listOfDates = startDate.datesUntil(endDate)
.collect(Collectors.toList());
listOfDates.forEach(item->{
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(dateTimeFormatter.format(item));
});
Java8
方法1
LocalDate startDate = LocalDate.now();
LocalDate endDate = startDate.plusMonths(2);
long numOfDays = ChronoUnit.DAYS.between(startDate, endDate);
List<LocalDate> listOfDates1 = Stream.iterate(startDate, date -> date.plusDays(1))
.limit(numOfDays)
.collect(Collectors.toList());
listOfDates1.forEach(item->{
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(dateTimeFormatter.format(item));
});
方法2
LocalDate startDate = LocalDate.now();
LocalDate endDate = startDate.plusMonths(2);
long numOfDays = ChronoUnit.DAYS.between(startDate, endDate);
List<LocalDate> listOfDates2 = LongStream.range(0, numOfDays)
.mapToObj(startDate::plusDays)
.collect(Collectors.toList());
listOfDates2.forEach(item->{
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(dateTimeFormatter.format(item));
});
922

被折叠的 条评论
为什么被折叠?



