2010-06-20 37 views
7

¿Cómo puedo comparar dos NSDates y devolver la cantidad de tiempo entre ellos?Comparar dos NSDates

Por ejemplo:

2010-06-20 14:29:41 -0400 
2010-06-20 14:53:29 -0400 

debe devolver algo como: 23 o 24 (minutos), redondeando los segundos porque yo realmente no necesita los segundos.

Respuesta

11

intentar algo como:

int intervall = (int) [date1 timeIntervalSinceDate: date2]/60; 
+0

funciona muy bien. Gracias un montón. –

+1

Tenga en cuenta que esto puede evaluar a una cantidad negativa de minutos, dependiendo de qué fecha es anterior. O bien niega el número si es negativo, o usa la función 'abs' o' fabs'. –

+0

gracias como siempre por ese consejo @ Peter –

2

Aquí el fragmento completo de comparar dos NSDate que pueden serle más útil basado en la consulta.

NSCalendar *myCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSString *str [email protected]"12:15, 01 15 2012 AM"; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm, dd MM yy a"]; 

NSDate *refDate = [formatter dateFromString:str]; 
NSDate *today = [NSDate date]; 



NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit; 
NSDateComponents *difference = [myCal components:unitFlags fromDate:refDate  toDate:today options:0]; 
NSLog(@"%@",difference); 

------------------------------ lo que obtendrá es -------- ---------------------------------

Año calendario: 0 Mes: 0 Día: 0 Hora: 1 Minuto: 19