因为NSDateformatter无法使用自定义日历,所以对于以下日历:

NSCalendar *ISO8601 = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierISO8601];
[ISO8601 setMinimumDaysInFirstWeek:7];
[ISO8601 setFirstWeekday:2];

如果需要一年的一周,

此日历会将2015年6月26日的2015-04-26 16:00:00转换为日历。

因此,我将获得一个字符串作为2015-16th week

然后,如何将字符串2015-16th week转换为正确的NSDate或DateComponents,因此,如果转换此新的NSDate或dateComponents,它将不会失去正确性?

最佳答案

- (NSDate *) dateByAddingWeeks:(NSInteger)dWeeks {

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [[NSDateComponents alloc] init];
NSUInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitTimeZone;
components = [gregorian components:unitFlags fromDate:self];
components.day = components.day + 7 * dWeeks;
return [gregorian dateFromComponents:components];
}

不确定。您是否正在寻找这种实用功能?

10-04 18:59