以下是我用来计算一个月中的星期数的代码。但是实际上我需要几个星期,每个星期的开始日期为MONDAY,结束日期为SUNDAY。例如,2012年1月将有5个星期。但是按照上述标准,将需要6周的时间。
2012年1月
第一周-周日01
第二周-2周一至8周日
第三周-周一9点至周日15点
第四周-周一16日至周日22
第五周-周一23日至周日29
第六周-星期一30至星期二31。

以下代码仅提供了5周的时间。

public class Test {
    public static void main(String[] args)
    {
        Calendar calendar = Calendar.getInstance();
        int year = 2012;
        int month = Calendar.JANUARY;
        int date = 1;
        calendar.set(year, month, date);
        int numOfDaysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        int numOfWeeksInMonth = calendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
        System.out.println("Number of Days In Month: " + numOfDaysInMonth);
        System.out.println("Number of Weeks In Month: " + numOfWeeksInMonth);

}

}


上面代码的输出是
每月的天数:31
月的周数:5

但是我需要获取“每月的周数:”为6
*另外,我正在尝试以ddMMYYYY格式获取每周的开始日期和结束日期。
我还在努力。

谁能帮我解决这个问题?

最佳答案

试试这个功能

public static void main(String[] args) {
    System.out.println(getNumberOfWeeks(2012, Calendar.JANUARY));
}

static int getNumberOfWeeks(int year, int month) {
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, 1);
    int numOfWeeksInMonth = 1;
    while (c.get(Calendar.MONTH) == month) {
        c.add(Calendar.DAY_OF_MONTH, 1);
        if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
            numOfWeeksInMonth++;
        }
    }
    return numOfWeeksInMonth;
}

09-20 13:33