【问题标题】:IOS returning wrong number of weeks in year [duplicate]IOS在一年中返回错误的周数[重复]
【发布时间】:2023-04-11 12:21:01
【问题描述】:

试图计算一年中的周数,下面是代码,但它返回的周数错误。

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 周,但返回 52 周。

【问题讨论】:

标签: ios objective-c iphone xcode cocoa


【解决方案1】:
- (NSInteger) getNumberOfWeeks : (NSDate *) fromDate {
       NSCalendar *cal = [NSCalendar currentCalendar];
      NSDateComponents *components = [cal components:NSCalendarUnitWeekOfYear fromDate:fromDate];
     return [components weekOfYear];
  }

或者试试这个

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

此方法将返回从 12 月 31 日到您在此函数中传递的日期的周数。

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多