2009-11-26 8 views
0

Я использую следующий код, чтобы получить месяцы правильно .... он возвращает правильные данные .. но он дает 2 месяца, когда я получаю от двух дат ... предположим, если я дам две даты, такие как janauary для марша, это будет дают 2 месяца ... как не могу я изменить, чтобы не дни точно (входят в Феврале) ...изменить месяцы на точные дни?

NSCalendar *sysCalendar = [NSCalendar currentCalendar]; 


unsigned int unitFlags = NSSecondCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 

NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0]; 

NSLog(@"Break down: %dmons", [breakdownInfo month]); 

ответ

1

Вы можете использовать NSDateComponents, но вы можете сосчитать дни просто, принимая разницу во времени каждой датыInterval. NSTimeInterval - число с плавающей запятой, которое подсчитывает количество секунд.

#define kSecondsInDay 86400 

int numberOfDays = [date2 timeIntervalSinceDate:date1]/kSecondsInDay; 
0

лишь указав NSDayCalendarUnit флаг при создании компонентов даты, вы получите количество дней, как результат от [breakdownInfo day].

+0

это дает неправильный ответ ... месяц возвращает 2 .. но дни возвращаются только 13 после того, как я осуществил ваш путь ... t –

+0

Я думаю, что вы делаете что-то не так. Если вы установите только дневной блок, только поле дня будет содержать допустимое значение. Другие поля просто случайны, поэтому вы не можете их использовать. Когда я просто устанавливаю блок дня, сравнивая два дня, которые составляют один месяц, я получаю, например, 30 в дневном поле. – Rhult

Смежные вопросы