1

以下は、月の週数を計算するために使用したコードです。しかし、実際には、各週の開始日を月曜日、終了日を日曜日とする週数が必要です。たとえば、2012 年 1 月には 5 週間あります。ただし、上記の基準では、6 週間かかります。
2012 年 1 月
第 1 週 - 日曜日 01
第 2 週 - 2 月 - 8 日曜日
第 3 週 - 9 月 - 15 日曜日
第 4 週 - 16 月 - 22 日
第 5 週 - 23 月 - 29

次のコードは 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);

}

}

上記のコードの出力は、
Number of Days In Month: 31
Number of Weeks In Month: 5 です。

しかし、「月の週数:」を 6 として取得する必要があります
*また、各週の開始日と終了日を ddMMYYYY 形式で取得しようとしています.. * まだ作業中です。

誰でもこれを修正するのを手伝ってもらえますか?

4

4 に答える 4

2

これを追加して "Number of Weeks In Month:" as 6

calendar.setFirstDayOfWeek(Calendar.MONDAY);
于 2013-01-16T11:04:42.117 に答える
1

この機能を試してください

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;
}
于 2013-01-16T11:00:44.403 に答える
1

これを試して:

public static int noWeeks(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 initDay = c.get(Calendar.DAY_OF_WEEK)-1
            ;
    int days =  c.getActualMaximum(Calendar.DAY_OF_MONTH);
    int a = (initDay==0?7:initDay)+days-1;
    return a/7+(a%7==0?0:1);

}
于 2013-01-16T11:27:08.263 に答える
0

O アルゴリズム コレト エッセ:

public static int getTotalWeeksOfMonth(int month, int year){

    int monthIndex = month-1;

     Calendar c = Calendar.getInstance();
     c.set(Calendar.YEAR, year);
     c.set(Calendar.MONTH, monthIndex);
     c.set(Calendar.DAY_OF_MONTH, 1);

     int numOfWeeksInMonth = 0;
     while (c.get(Calendar.MONTH) == monthIndex) {
         c.add(Calendar.DAY_OF_MONTH, 1);
         int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
         if ( dayOfWeek == Calendar.SUNDAY) {
             numOfWeeksInMonth++;
         }
     }

     if (c.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
         numOfWeeksInMonth++;
     }

     return numOfWeeksInMonth;
}
于 2015-07-23T18:27:29.130 に答える