Get the Week Number in iOS SDK

牧云@^-^@ 提交于 2019-11-28 01:09:47

问题


I want to get the Week number of the year from the date.I tried the code as follow but gives me a wrong week number.

My code for week number:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-dd"];
    NSDate *date = [dateFormatter dateFromString:@"2012-09-15"];


    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSLog(@"week: %i", [[calendar components: NSWeekOfYearCalendarUnit fromDate:date] weekOfYear]); //Display 38 instead of 37
}

Note: If i try with with [NSDate date] display the correct.

Help me to solve this.. Thank you,


回答1:


ObjectiveC:

 NSCalendar *calendar = [NSCalendar currentCalendar];
 NSDateComponents *dateComponent = [calendar components:(NSWeekOfYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]];
 NSLog(@"%@",dateComponent);

Update

 NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateComponent = [calendar components:(NSCalendarUnitWeekOfYear | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:date];
    NSLog(@"%@",dateComponent);

Swift:

let calendar = NSCalendar.currentCalendar()
let dateComponent = calendar.components([.WeekOfYear, .Day, .Month, .Year], fromDate: NSDate(timeIntervalSinceNow: 0))
print("weekOfYear \(dateComponent.weekOfYear)")

Swift 3:

let component = Calendar.current.component(.weekOfYear, from: Date())
print("Week of Year \(component)")



回答2:


[NSCalendar currentCalendar] gives you a Gregorian Calendar as default. You can use

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSISO8601Calendar];

to get an ISO 08601 conform calendar, which has week number 37 for your date.




回答3:


Swift 3: You need know last Date of selected month. Than check number of week for this week, and this will be your number of weeks in month

return Calendar.current.component(.weekOfMonth, from: lastDate ?? Date())



回答4:


Updated code in ObjectiveC used Xcode version - 9.1 - :

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateComponent = [calendar components:(NSCalendarUnitWeekOfYear | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:[NSDate date]];
    NSLog(@"%ld",(long)[dateComponent weekOfYear]);


来源:https://stackoverflow.com/questions/17587697/get-the-week-number-in-ios-sdk

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!