如何计算一个月内的星期二数?

use*_*061 0 java calendar

如何计算一个月内的星期二数?

使用calender.set我们可以设置特定月份,之后如何计算当月的星期一,星期二等数量?

代码是:

public static void main(String[] args )
{
    Calendar calendar = Calendar.getInstance();
    int  month = calendar.MAY; 
    int year = 2012;
    int date = 1 ;

    calendar.set(year, month, date);

    int MaxDay = calendar.getActualMaximum(calendar.DAY_OF_MONTH);
    int mon=0;

    for(int i = 1 ; i < MaxDay ; i++)
    {        
        calendar.set(Calendar.DAY_OF_MONTH, i);
        if (calendar.get(Calendar.DAY_OF_WEEK) == calendar.MONDAY ) 
            mon++;      
    }

    System.out.println("days  : " + MaxDay);    
    System.out.println("MOndays  :" + mon);
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*exR 8

没有在这里编写完整的代码是一般的想法:

    Calendar c = Calendar.getInstance();
    c.set(Calendar.MONTH, Calendar.MAY); // may is just an example
    c.set(Calendar.YEAR, 2012);
    int th = 0;
    int maxDayInMonth = c.getMaximum(Calendar.MONTH);
    for (int d = 1;  d <= maxDayInMonth;  d++) {
        c.set(Calendar.DAY_OF_MONTH, d);
        int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
        if (Calendar.THURSDAY == dayOfWeek) {
            th++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

此代码应计算星期四的数量.我相信你可以修改它来计算一周中所有天数.

显然这段代码效率不高.它迭代了一个月的所有日子.您可以通过获取第一天的星期几,月中的天数以及(我相信)您可以编写代码来计算每周的每一天的数量,而不会在整个月内进行迭代来优化它.