0
public static void getWeeksOfMonth(int month, int year) {
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd-MMM-yyyy");
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year);
    cal.set(Calendar.MONTH, month);
    cal.set(Calendar.DAY_OF_MONTH, 1);

    int ndays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    System.out.println(ndays + "<<<ff");
    int inc = 1;
    for (int i = 1; i <= ndays; i++) {
        String day = sdf.format(cal.getTime());
        System.out.println(day + "<<<");
        Log.e("quest", day + "<<<");
        inc++;
        if (i % 7 == 0) {
            Log.e("question", "=======week days===========");
            inc = 0;
        }
        if (inc >= 1 && i == ndays) {

            //cal.set(Calendar.MONTH, month+1);

            Log.e("endval", " " + day);
            for (int ii = inc; ii <= 6; ii++) {
                String dayi = sdf.format(cal.getTime());
                System.out.println(dayi + "<<<");
                Log.e("quest1", dayi + "<<<");
                inc++;
                if (ii % 7 == 0) {
                }
            }

        }
        cal.add(Calendar.DATE, 1);
    }

}

OutPut

Wednesday 01-Nov-2017<<<

Thursday 02-Nov-2017<<<

Friday 03-Nov-2017<<<

Saturday 04-Nov-2017<<<

Sunday 05-Nov-2017<<<

Monday 06-Nov-2017<<<

Tuesday 07-Nov-2017<<<

=======week days===========

Wednesday 08-Nov-2017<<<

Thursday 09-Nov-2017<<<

Friday 10-Nov-2017<<<

Saturday 11-Nov-2017<<<

Sunday 12-Nov-2017<<<

Monday 13-Nov-2017<<<

Tuesday 14-Nov-2017<<<

=======week days===========

Wednesday 15-Nov-2017<<<

Thursday 16-Nov-2017<<<

Friday 17-Nov-2017<<<

Saturday 18-Nov-2017<<<

Sunday 19-Nov-2017<<<

Monday 20-Nov-2017<<<

Tuesday 21-Nov-2017<<<

=======week days===========

Wednesday 22-Nov-2017<<<

Thursday 23-Nov-2017<<<

Friday 24-Nov-2017<<<

Saturday 25-Nov-2017<<<

Sunday 26-Nov-2017<<<

Monday 27-Nov-2017<<<

Tuesday 28-Nov-2017<<<

=======week days===========

Wednesday 29-Nov-2017<<<

Thursday 30-Nov-2017<<<

Thursday 30-Nov-2017<<< Want Friday 1 dec 2017 and so on...

Thursday 30-Nov-2017<<<

Thursday 30-Nov-2017<<<

Thursday 30-Nov-2017<<<

Thursday 30-Nov-2017<<<

But I want to get all weeks(date 7 days of week) of current month Pattern is like

Start with Friday of current month..

Friday 03-Nov-2017

Saturday 04-Nov-2017

Sunday 05-Nov-2017

Monday 06-Nov-2017

Tuesday 07-Nov-2017

Wednesday 08-Nov-2017

Thursday 09-Nov-2017

End with Thursday..

=======week days===========

Friday 10-Nov-2017

Saturday 11-Nov-2017

Sunday 12-Nov-2017

Monday 13-Nov-2017

Tuesday 14-Nov-2017

Wednesday 15-Nov-2017

Thursday 16-Nov-2017

=======week days===========

Friday 17-Nov-2017

Saturday 18-Nov-2017

Sunday 19-Nov-2017

Monday 20-Nov-2017

Tuesday 21-Nov-2017

Wednesday 22-Nov-2017

Thursday 23-Nov-2017

=======week days=========

Friday 24-Nov-2017

Saturday 25-Nov-2017

Sunday 26-Nov-2017

Monday 27-Nov-2017

Tuesday 28-Nov-2017

Wednesday 29-Nov-2017

Thursday 30-Nov-2017

=======week days===========

Friday 1-Dec-2017

Saturday 2-Dec-2017

Sunday 3-Dec-2017

Monday 4-Dec-2017

Tuesday 5-Dec-2017

Wednesday 6-Dec-2017

Thursday 7-Dec-2017

End with next month of first week, if current month last week have less then 7 days.

ahmad
  • 89
  • 9
  • can you show us your code – John Joe Nov 30 '17 at 06:41
  • @JohnJoe yes I update my question – ahmad Nov 30 '17 at 06:45
  • [This](https://stackoverflow.com/a/12676277/4168607) may help . – ADM Nov 30 '17 at 06:49
  • @ADM Read my question I donot want number of weeks i want dates with weeks – ahmad Nov 30 '17 at 06:53
  • I read it already . thats why i sent link for atleast some help. – ADM Nov 30 '17 at 06:59
  • See my updated post it will give your expected output – Raja Nov 30 '17 at 08:04
  • Even on Android I recommend you drop the long outdated classes `Date`, `SimpleDateFormat` and friends. [`java.time`, the modern Java date and time API also known as JSR-310](https://docs.oracle.com/javase/tutorial/datetime/), is so much nicer to work with. In general and even more so for special date requirements like yours. Yes, you can use it on Android through the [ThreeTanABP](https://github.com/JakeWharton/ThreeTenABP) project. – Ole V.V. Nov 30 '17 at 17:38

2 Answers2

2

You have to use this code, I have to modify and add some lines. It will help you

 public static void getWeeksOfMonth(int month, int year) {
        SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd-MMM-yyyy");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month);
        cal.set(DAY_OF_MONTH, 1);
        int ndays = cal.getActualMaximum(DAY_OF_MONTH);
        System.out.println(ndays + "<<<ff");
        while (cal.get(DAY_OF_WEEK) != FRIDAY) {
            cal.add(DAY_OF_MONTH, 1);
            ndays--;
        }
        int remainingDays = ndays%7;
        if(remainingDays==0)
            ndays += 7;
        else
            ndays = ndays + 7 - remainingDays;

        int inc = 1;
        for (int i = 1; i <= ndays; i++) {
            String day = sdf.format(cal.getTime());
            System.out.println(day + "<<<");
            inc++;
            if (i % 7 == 0) {
                Log.e("question", "=======week days===========");
                inc = 0;
            }
            if (inc >= 1 && i == ndays) {
                for (int ii = inc; ii <= 6; ii++) {
                    String dayi = sdf.format(cal.getTime());
                    System.out.println(dayi + "<<<");
                    Log.e("quest1", dayi + "<<<");
                    inc++;
                }
            }
            cal.add(Calendar.DATE, 1);
        }

    }

My Output Is

Friday 03-Feb-2017<<<
Saturday 04-Feb-2017<<<
Sunday 05-Feb-2017<<<
Monday 06-Feb-2017<<<
Tuesday 07-Feb-2017<<<
Wednesday 08-Feb-2017<<<
Thursday 09-Feb-2017<<<
=====week days===========
Friday 10-Feb-2017<<<
Saturday 11-Feb-2017<<<
Sunday 12-Feb-2017<<<
Monday 13-Feb-2017<<<
Tuesday 14-Feb-2017<<<
Wednesday 15-Feb-2017<<<
Thursday 16-Feb-2017<<<
=====week days===========
Friday 17-Feb-2017<<<
Saturday 18-Feb-2017<<<
Sunday 19-Feb-2017<<<
Monday 20-Feb-2017<<<
Tuesday 21-Feb-2017<<<
Wednesday 22-Feb-2017<<<
Thursday 23-Feb-2017<<<
=====week days===========
Friday 24-Feb-2017<<<
Saturday 25-Feb-2017<<<
Sunday 26-Feb-2017<<<
Monday 27-Feb-2017<<<
Tuesday 28-Feb-2017<<<
Wednesday 01-Mar-2017<<<
Thursday 02-Mar-2017<<<
=====week days===========
Raja
  • 2,775
  • 2
  • 19
  • 31
0

Modify your for loop to this logic:

for(int i=1; i<=ndays;i+=7){

        String day = sdf.format(cal.getTime());
        System.out.println(day + "<<<");
        increment++;

        cal.add(Calendar.DATE, 1);
        if(increment >= 1){
            for(int j = 2;j <= 7;j++){
                String day1 = sdf.format(cal.getTime());
                System.out.println(day1 + "<<<");
                cal.add(Calendar.DATE, 1);
            }
            System.out.println("<<<END");
            increment = 0;
        }
    }
jay2109
  • 49
  • 1
  • 1
  • 4