2

I am trying to disable the Saturday and Sunday in my calendar. To do that first I have to find it. I tried it but I am unable to get it. Here I posted the code.

 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;
}

I need to get the Saturday and Sunday of the Current Month (Say: Aug), but the result what I am getting is previous Month, i.e. July.

Anish Kumar
  • 478
  • 4
  • 12
  • 27
  • This Question duplicates *many* others in Stack Overflow for getting the current month, getting the first and last days of a month, and for detecting each Saturday or Sunday or weekday (etc.). – Basil Bourque Aug 27 '16 at 06:41

2 Answers2

9

Try this instead:

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));

Output

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
Andreas
  • 154,647
  • 11
  • 152
  • 247
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;
}
Nitesh
  • 21
  • 2