Get the Week Number in iOS SDK

南笙酒味 提交于 2019-11-29 07:18:18
Misha Vyrko

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

[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.

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

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