繁体   English   中英

java.time.LocalDate 范围内的生日

[英]Birthdays in the scope of java.time.LocalDate

我正在尝试在java.time.LocalDate的集合中选择生日(与年份无关)。 为什么是 LocalDate ? 因为这种类型似乎最适合生日。

假设我想过滤 3 月 6 日和 4 月 30 日之间的生日,而不考虑年份。 这该怎么做 ?

如果我要这样做,我会替换 LocalDate 中的年份并使用isAfterisBefore方法。 我必须更改年份这一事实只是一个简单的技巧。 或者我使用了错误的数据类型 (LocalDate)

我宁愿使用类型MonthDay ,它是“没有年份的日期”,它也具有可比性,并提供诸如isAfter()isBefore() 此外,可以使用atYear(int)方法将MonthDay扩展为LocalDate

如果您坚持使用LocalDate那么您应该只使用闰年,否则 2 月 29 日将是一个问题。

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM