У меня проблемы с добавлением значений к датам, а также с получением различий между датами.
Даты и компоненты рассчитаны неверно.
Таким образом, для добавления, если я добавляю 1,5 месяца, я получаю только 1 месяц, однако, если я добавляю любое целое число, т. Е. (1 или 2 или 3 и т. Д.), Он вычисляется правильно.
Float32 addAmount = 1.5;
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
[components setMonth:addAmount];
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSDate *newDate2 = [gregorian dateByAddingComponents:components toDate:Date1 options:0];
Теперь для разницы, если у меня есть дата, которая была добавлена ровно с одним годом (почти такой же код, как и выше), она добавляется правильно, но когда вычисляется разница, я получаю 0 лет, 11 месяцев и 30 дней.
NSDate *startDate = Date1;
NSDate *endDate = Date2;
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:startDate
toDate:endDate options:0];
NSInteger years = [components year];
NSInteger months = [components month];
NSInteger days = [components day];
Что я делаю не так? Также я добавил константу kCFCalendarComponentsWrap в опциях для функций добавления и разности, но без разницы.
Спасибо