下面的代码在传递year
和时计算给定周的前一周数week
。
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:year];
[components setWeek:NSWeekCalendarUnit];
[components setWeekOfYear:(week-1)]; //Get the previous week
[components setWeekday:2]; //Monday
[components setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [calendar dateFromComponents:components];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyyww"];
NSString *newRevision = [formatter stringFromDate:date];
我很惊讶它处理了像 201101 (给出 201052)这样的案例,但它不能正确处理有 53 周的年份。例如,对于 201601,它返回 201552 而不是 201153。(至少根据http://en.wikipedia.org/wiki/ISO_week_date它应该返回 201153。 )
难道我做错了什么?我已经跟踪以确保输入正确。