Используйте приведенную ниже функцию NSDate с вашим контактом NSDate
.
- (NSTimeInterval)timeIntervalSinceNow
Данная функция возвращает интервал между получателем и текущей датой и временем.
NSTimeInterval interval = [date1 timeIntervalSinceNow:myContactDate];
NSTimeInterval
- истекшее время в секундах (выраженное числом с плавающей запятой). Затем вы можете поделить на 86400, то есть количество секунд в дне и округлить до ближайшего целого числа.
NSInteger days = interval / 86400;
Теперь у вас есть количество дней ...
РЕДАКТИРОВАНИЕ:
Вы также можете использовать NSCalendar
и NSDateComponents
, чтобы получить компонент дня только между двумя датами.
- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts
Используйте приведенный ниже код для справки. ( Взято из документации Apple для NSCalendar )
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *startDate = ...;
NSDate *endDate = ...;
unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *comps = [gregorian components:unitFlags fromDate:startDate toDate:endDate options:0];
int months = [comps month];
int days = [comps day];