2016-08-27 32 views
1

私はカレンダーで土曜日と日曜日を無効にしようとしています。まずそれを見つけるために私はそれを見つけなければなりません。私はそれを試しましたが、私はそれを得ることができません。ここでコードを投稿しました。アンドロイドで今月の土曜日と日曜日を見つける方法は?

public int countWeekendDays() { 
    Calendar calendar = Calendar.getInstance(); 

    calendar.set(Calendar.DAY_OF_WEEK, Calendar.DATE+1); 
    int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 

    int count = 0; 
    for (int day = 1; day <= daysInMonth; day++) { 
     calendar.set(Calendar.DAY_OF_WEEK, Calendar.DATE+1, day); 
     int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); 
     if (dayOfWeek == Calendar.SUNDAY || dayOfWeek == Calendar.SATURDAY) { 
      if(dayOfWeek==Calendar.SUNDAY) 
       calendar.add(Calendar.DATE, Calendar.SUNDAY-1); 
      else if(dayOfWeek==Calendar.SATURDAY) 
       calendar.add(Calendar.DATE, Calendar.SATURDAY); 

      disable.add(calendar.getTime()); 
     } 

    } 
    for(int i=0;i<disable.size();i++) 
    { 
     Log.e("***&***",disable.get(i).toString()); 
    } 
    return count; 
} 

私は今月の土曜日と日曜日(セイ:8月)を取得する必要がありますが、私は取得していますどのような結果は、すなわち7月以前の月です。

+0

この質問の重複は、最初と最後の日の、当月取得取得のためのスタックオーバーフローの多くの*他の*毎月、および土曜日または日曜日または曜日ごとに検出するために使用されます。 –

答えて

3

代わりにこれを試してみてください:

List<Date> disable = new ArrayList<>(); 

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.DAY_OF_MONTH, 1); 
int month = cal.get(Calendar.MONTH); 
do { 
    int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); 
    if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) 
     disable.add(cal.getTime()); 
    cal.add(Calendar.DAY_OF_MONTH, 1); 
} while (cal.get(Calendar.MONTH) == month); 

SimpleDateFormat fmt = new SimpleDateFormat("EEE M/d/yyyy"); 
for (Date date : disable) 
    System.out.println(fmt.format(date)); 

出力

Sat 8/6/2016 
Sun 8/7/2016 
Sat 8/13/2016 
Sun 8/14/2016 
Sat 8/20/2016 
Sun 8/21/2016 
Sat 8/27/2016 
Sun 8/28/2016 
+0

その作業...ありがとうの男 –

2
public static ArrayList<Calendar> getAllSundayDate(Calendar aCurrentDateCal, int aMaxMonth){ 
    //max month next month for Exp: next 2 month from this month 
    ArrayList<Calendar> disableDayList = new ArrayList<>(); 
    Calendar cal; 
    cal = aCurrentDateCal; 
    for (int index = 0; index < aMaxMonth; index++) { 
     int year = cal.get(Calendar.YEAR); 
     int month = cal.get(Calendar.MONTH); 
     Calendar curCal = Calendar.getInstance(); 
     curCal.set(year, month , 1); 
     int daysInMonth = curCal.getActualMaximum(Calendar.DAY_OF_MONTH); 

     for (int day = 1; day <= daysInMonth; day++) { 
      curCal.set(year, month, day); 
      int dayOfWeek = curCal.get(Calendar.DAY_OF_WEEK); 
      if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) { 
       disableDayList.add(curCal); 
       Date curDate = new Date(curCal.getTimeInMillis()); 
       System.out.println(curDate); 
      } 
     } 

     cal.add(Calendar.MONTH, 1); 
    } 
    return disableDayList; 
} 
+1

あなたのコードについて少し説明してください – karan

関連する問題