Сколько кварталов между двумя датами?

NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *dateStart = [calendar components:unitFlags fromDate:start];
quarterStart = [dateStart quarter];
NSDateComponents *dateEnd = [calendar components:unitFlags fromDate:end];
quarterEnd = [dateEnd quarter];

Имея два начала и конца NSDate и извлекая начальный квартал и конечный квартал, мне нужно знать разницу в кварталах между этими двумя датами.

Я знаю, что могу разделить общее количество дней/90 дней, но я ищу другое решение, имеющее только эти данные.

Любые подсказки?


person Fabrizio    schedule 23.11.2012    source источник


Ответы (2)


Ты должен попытаться:

NSDateComponents *result = [[NSCalendar currentCalendar] components:NSQuarterCalendarUnit fromDate:start toDate:end options:0];
NSInteger numberOfQuaters = [result quarter];
person Andriy    schedule 23.11.2012
comment
Спасибо, это помогает :) Как вы думаете, другое мое решение было бы также хорошим (даже если не слишком ... элегантным)? - person Fabrizio; 23.11.2012
comment
См. сессию 117 с WWDC 2011 на сайте developer.apple.com. Он содержит много полезной информации о расчетах календаря и о том, почему вам никогда не следует выполнять их вручную. - person Andriy; 23.11.2012
comment
код, который вы разместили, должен работать как «автономный»? или мне нужно сначала выделить NSCalendar? Я пытаюсь, но всегда получаю результат = 0 - person Fabrizio; 25.11.2012
comment
Спасибо, ответ правильный, но из-за ошибки Apple о Quarter он пока не работает. - person Fabrizio; 02.12.2012

Я решил использовать это, потому что другой предложенный ответ не работает для ошибки Apple на квартальной единице.

numberOfQuarters = (4 - startQuarter) + ((endYear -1 - startYear) * 4) + endQuarter;
person Fabrizio    schedule 23.11.2012
comment
Можно поподробней о какой ошибке? Вы подали отчет? - person hwaxxer; 02.12.2012