У меня проблемы с добавлением значений к датам, а также с получением различий между датами. Вычисленные даты и компоненты неверны.
Итак, для добавления, если я добавляю 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 в опции как для добавления, так и для разностных функций, но без разницы.
Спасибо