java.time.LocalDate范围内的生日
我试图在java.time.LocalDate范围内的生日,java,localdate,java-time,Java,Localdate,Java Time,我试图在java.time.LocalDate的集合中选择生日(独立于年份)。为什么是本地日期?因为这种类型的生日礼物似乎是最好的 假设我想过滤3月6日至4月30日之间的生日,而不考虑年份。 如何做到这一点? 如果我这样做,我会用LocalDate替换年份,并使用isAfter和isBefore方法。 我必须改变年份的事实只是一个简单的错误。或者我使用了错误的数据类型(LocalDate)我宁愿使用“没有年份的日期”类型,该类型也具有可比性,并提供类似于isAfter()或isBefore()的
java.time.LocalDate
的集合中选择生日(独立于年份)。为什么是本地日期?因为这种类型的生日礼物似乎是最好的
假设我想过滤3月6日至4月30日之间的生日,而不考虑年份。
如何做到这一点?
如果我这样做,我会用LocalDate替换年份,并使用isAfter
和isBefore
方法。
我必须改变年份的事实只是一个简单的错误。或者我使用了错误的数据类型(LocalDate)我宁愿使用“没有年份的日期”类型,该类型也具有可比性,并提供类似于
isAfter()
或isBefore()的方法。此外,可以使用atYear(int)
方法将MonthDay
扩展为LocalDate
如果您坚持使用LocalDate
,那么您应该只使用闰年,否则2月29日将是一个问题。List birthdays=Arrays.asList(
List<LocalDate> birthdays = Arrays.asList(
LocalDate.of(1990, Month.JANUARY, 5),
LocalDate.of(1992, Month.MARCH, 7),
LocalDate.of(1995, Month.MAY, 5));
MonthDay filterFrom = MonthDay.of(Month.MARCH, 6);
MonthDay filterTo = MonthDay.of(Month.APRIL, 30);
List<LocalDate> filteredDates = birthdays.stream()
.filter(date -> {
MonthDay md = MonthDay.from(date);
return md.compareTo(filterFrom) >= 0 && md.compareTo(filterTo) <= 0;
})
.collect(Collectors.toList());
System.out.println(filteredDates);
LocalDate.of(1990年1月5日),
本地日期(1992年3月7日),
本地日期(1995年5月5日);
MonthDay filterFrom=年月日(6月3日);
MonthDay filterTo=年月日(30年4月);
List filteredDates=birthdays.stream()
.filter(日期->{
MonthDay md=MonthDay.from(日期);
返回md.compareTo(filterFrom)>=0&&md.compareTo(filterTo)