2010-06-20 10 views
7

Comment puis-je comparer deux NSDates et renvoyer la quantité de temps entre eux.Comparer deux NSDates

Par exemple:

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

devrait retourner quelque chose comme: 23 ou 24 (minutes), arrondir les secondes parce que je ne sais vraiment pas besoin des secondes.

Répondre

11

essayer quelque chose comme:

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

fonctionne très bien. Merci beaucoup. –

+1

Notez que cela peut correspondre à un nombre négatif de minutes, selon la date antérieure. Annulez le nombre s'il est négatif ou utilisez la fonction 'abs' ou' fabs'. –

+0

merci comme toujours pour cette astuce @Peter –

2

Voici l'extrait complet pour comparer deux NSDate que vous trouverez peut-être plus utile en fonction de votre requête.

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); 

------------------------------ ce que vous obtiendrez est -------- ---------------------------------

Année civile: 0 Mois: 0 Jour: 0 Heure: 1 Minute: 19