Java语言怎么编写一个日期统计程序,计算2023年有多少个星期一

Java语言怎么编写一个日期统计程序,计算2023年有多少个星期一?如果不用循环去遍历,还有什么办法可以计算的呢

运行效果如图

img

代码如下

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class DateStatistics {
    public static void main(String[] args) {
        int count = countMondaysInYear(2023);
        System.out.println("2023年有 " + count + " 个星期一");
    }

    private static int countMondaysInYear(int year) {
        LocalDate firstDayOfYear = LocalDate.of(year, 1, 1);
        LocalDate firstMonday = firstDayOfYear.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));

        int daysUntilEndOfYear = firstMonday.isAfter(firstDayOfYear)
                ? firstMonday.lengthOfYear() - firstMonday.getDayOfYear() + 1
                : firstMonday.lengthOfYear() - firstMonday.getDayOfYear();

        return daysUntilEndOfYear / 7 + 1;
    }
}


2023年1月1日是星期日,然后整年一共365天,所以减去1天,再除7取整

首先你得知道,每7天会有一个星期1,而2023年是平年,有365天
2023年1月1日是周日
那么从1月2日起,每七天就会有一个星期1
而365-1=364天
367/7=52……3
余下的三天分别是:周一、周二、周三
因此答案还要加一:52+1=53

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^