如何在android中找到当月的星期六和星期日?

How to find the Saturday and Sunday of the current month in android?

我想在我的日历中禁用星期六和星期日。为此,我首先必须找到它。我试过了,但我无法得到它。这里我贴出代码。

 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 月。

试试这个:

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