You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中统计当前月份周日数量的实现问题及修正方案

计算当前月份指定星期的出现次数(以周日为例)

我看到你尝试用Calendar类统计当前月份的周日数量,但代码没得到正确结果——问题出在循环里的一个小错误:你每次循环都把日期重置成了当月的1号,所以每次判断的都是1号的星期几,自然没法统计整个月的周日数量。

修正后的代码方案

只需要把循环里设置日期的代码改成当前循环的day值,而不是固定的1,同时把逻辑封装成可复用的方法,方便以后统计其他星期几:

import java.util.Calendar;

public class MonthDayCounter {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int currentMonth = cal.get(Calendar.MONTH);
        int currentYear = cal.get(Calendar.YEAR);
        
        // 调用方法统计当月周日数量
        int sundayCount = countDayOccurrence(currentYear, currentMonth, Calendar.SUNDAY);
        System.out.println("当前月份的周日数量:" + sundayCount);
    }

    public static int countDayOccurrence(int year, int month, int dayToFind) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, 1);
        int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        int count = 0;
        
        for (int day = 1; day <= daysInMonth; day++) {
            // *关键修正*:这里设置为当前循环的day,而不是固定的1
            calendar.set(year, month, day);
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            if (dayOfWeek == dayToFind) {
                count++;
            }
        }
        return count;
    }
}

核心问题说明

原代码的错误行:

cal.set(ano_cal, mes_cal, 1);

这行代码会让循环的每一次都回到当月1号,导致你永远只在判断1号是不是周日,自然统计不出全月的周日数量。修正后每次循环都会定位到当月的具体某一天,才能正确统计目标星期的出现次数。

这个方法还很灵活——如果要统计当月的周六数量,只需要把第三个参数改成Calendar.SATURDAY就行。

内容的提问来源于stack exchange,提问作者Jose Borges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:32:33