首页 > 解决方案 > java - 如何使用Java 8中的每个月的LocalDate来获得每个月有多少个星期五?

问题描述

我想计算每个月可用的星期五总数。如何得到它?

1.代码

private static int getFridayCount(DayOfWeek dayOfWeek, LocalDate startDate) {
    return // 
}

标签: javajava-8

解决方案


可能不是最快的,但我觉得这很容易理解:

public static int numberOfDaysOfWeekInMonth(DayOfWeek dow, YearMonth yearMonth) {
    LocalDate startOfMonth = yearMonth.atDay(1);
    LocalDate first = startOfMonth.with(TemporalAdjusters.firstInMonth(dow));
    LocalDate last = startOfMonth.with(TemporalAdjusters.lastInMonth(dow));
    return (last.getDayOfMonth() - first.getDayOfMonth()) / 7 + 1;
}

示例用法:

System.out.println(
    numberOfDaysOfWeekInMonth(
        DayOfWeek.FRIDAY, YearMonth.of(2020, 9)
    )
); // outputs 4

推荐阅读