Search code examples
ioscalendarnscalendar

Get weeks date in IOS SDK


I want to get the current & next week dates with day name.

i.e. If today's date is 28-06-2013 (Friday) then I want to get the dates from 23-06-2013(sunday) to 29-06-2013 (Saturday) as the this current week.

for next week I want to get dates from 30-06-2013(sunday) to 06-07-2013 (saturday).

How can I do this?

Thank you,


Solution

  • Here is sample code that does the trick.

    -(NSArray*)daysThisWeek
    {
         return  [self daysInWeek:0 fromDate:[NSDate date]];
    }
    
    -(NSArray*)daysNextWeek
    {
        return  [self daysInWeek:1 fromDate:[NSDate date]];
    }
    -(NSArray*)daysInWeek:(int)weekOffset fromDate:(NSDate*)date
    {
        NSCalendar *calendar = [NSCalendar currentCalendar];
    
        //ask for current week
        NSDateComponents *comps = [[NSDateComponents alloc] init];
        comps=[calendar components:NSWeekCalendarUnit|NSYearCalendarUnit fromDate:date];
        //create date on week start
        NSDate* weekstart=[calendar dateFromComponents:comps];
        if (weekOffset>0) {
            NSDateComponents* moveWeeks=[[NSDateComponents alloc] init];
            moveWeeks.week=1;
            weekstart=[calendar dateByAddingComponents:moveWeeks toDate:weekstart options:0];
        }
    
        //add 7 days
        NSMutableArray* week=[NSMutableArray arrayWithCapacity:7];
        for (int i=1; i<=7; i++) {
            NSDateComponents *compsToAdd = [[NSDateComponents alloc] init];
            compsToAdd.day=i;
            NSDate *nextDate = [calendar dateByAddingComponents:compsToAdd toDate:weekstart options:0];
            [week addObject:nextDate];
    
        }
        return [NSArray arrayWithArray:week];
    }