NSCalendar NSDateComponents weekofYear return 1 with date 2014-12-31

后端 未结 3 614
难免孤独
难免孤独 2021-01-28 17:01

I want to get weekofYear with date \'2014-12-31\' ,but it always return 1 not 52 here is my code:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSUIntege         


        
3条回答
  •  情书的邮戳
    2021-01-28 17:51

    An alternative approach is to use the yearForWeekOfYear property of the NSDateComponents instance. If the yearForWeekOfYear is after the year of the date passed to components:fromDate:, then it is week 52.

    E.g.

    NSCalendar *calendar = [NSCalendar currentCalendar];
    
    NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit | NSYearForWeekOfYearCalendarUnit;
    NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:[NSDate date]];
    
    NSInteger weekOfYear = dateComponent.weekOfYear;
    if (dateComponent.yearForWeekOfYear > dateComponent.year)
        weekOfYear = 52;
    NSLog(@"%i",weekOfYear); // 52
    

提交回复
热议问题