-3

Trying To Calculate number of weeks in year, below is the code but it is returning wrong number of weeks.

NSDateComponents * components = [[NSDateComponents alloc] init];
    components.year = 2015;
    components.weekday=2;
    NSCalendar * calendar = [NSCalendar currentCalendar];
    NSDate * date = [calendar dateFromComponents:components];
    NSInteger length = [calendar rangeOfUnit:NSCalendarUnitWeekOfYear inUnit:NSCalendarUnitYearForWeekOfYear forDate:date].length;
    NSLog(@"%ld",(long)length);

2015 = 53 weeks but it is returning 52 weeks.

Maddy Barakz
  • 11
  • 1
  • 7

1 Answers1

0
- (NSInteger) getNumberOfWeeks : (NSDate *) fromDate {
       NSCalendar *cal = [NSCalendar currentCalendar];
      NSDateComponents *components = [cal components:NSCalendarUnitWeekOfYear fromDate:fromDate];
     return [components weekOfYear];
  }

OR Try this

NSDate *date = [NSDate date];//since you are forming date, put it here
NSCalendar *calender = [NSCalendar currentCalendar];
NSRange weekRange = [calender rangeOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:date];
NSInteger weeksCount=weekRange.length;
NSLog(@"%d",weeksCount);

This method will return number of week from December 31 to the date which you pass in this function.

Anil solanki
  • 962
  • 4
  • 20