2016-11-23 4 views
0

Я использую следующий метод, чтобы получить разницу во времени по времени в минутах, что дает мне отрицательное значение.Дата Разница во времени в минутах в ios

Я использую следующий код:

NSCalendar *gregorian = [[NSCalendar alloc] 
         initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

NSUInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitMinute; 

NSDateComponents *components = [gregorian components:unitFlags 
              fromDate:dt2 
               toDate:dt1 options:0]; 
NSInteger months = [components month]; 
NSInteger days = [components day]; 
NSInteger minutes = [components minute]; 

NSLog(@"months %ld",(long)months); 
NSLog(@"days %ld",(long)days); 
NSLog(@"minutes %ld",(long)minutes); 

int res = (int)minutes; 
NSLog(@"int minutes %d",res); 

return res; 

Я хочу, чтобы рассчитать разницу между этими двумя ниже даты в течение нескольких минут:

  • date1: 2016-11-23 7:39:44 +0000
  • date2: 2016-11-23 08:13:44 +0000

в результате я получаю -34 ,

+0

возвращение abs (res); – Darshana

ответ

0

fromDate будет содержать более раннюю дату и toDate будет указана более поздняя дата в NSDateComponents вы передаете это неправильно изменить

NSDateComponents *components = [gregorian components:unitFlags 
              fromDate:dt2 
               toDate:dt1 options:0]; 

к этому

NSDateComponents *components = [gregorian components:unitFlags 
              fromDate:dt1 
               toDate:dt2 options:0]; 
1

Вы должны заменить это:

NSDateComponents *components = [gregorian components:unitFlags 
              fromDate:dt1 
               toDate:dt2 options:0]; 
0

Если вы не знаете whi ch date является прежним, просто верните абсолютное значение разницы. Это всегда даст вам положительное значение.

return abs(res); 
Смежные вопросы