Vérifier si un NSDate est supérieur à un autre

if (datStartDate > datEndDate) { 

Cela ne semble pas fonctionner. Je sais qu’il y a un isEqual , etc., mais comment est-ce que je fais “est plus grand que”?

Il y a les deux NSDate .

La méthode la plus simple que je connaisse est la suivante:

 if( [firstDate timeIntervalSinceDate:secondDate] > 0 ) { 

Les autres réponses couvrent la comparaison: veulent append un peu de saveur;).

Pour comparer les dates, utilisez -compare: méthode:

Valeur de retour si:

  • Le récepteur et anotherDate sont exactement égaux l’un à l’autre, NSOrderedSame
  • Le récepteur est plus tard dans le temps qu’une autre date, NSOrderedDescending
  • Le récepteur est plus tôt que toute autre date, NSOrderedAscending .

Qu’en est-il de…

 if ([datStartDate earlierDate: datEndDate] == datStartDate) { // datStartDate is earlier } else { // datEndDate is earlier } 

Comme vous avez des NSDates :

 NSDate *datStartDate = [NSDate dateWithSsortingng:@"2010-10-01 03:00:00 +0900"]; NSDate *datEndDate = [NSDate dateWithSsortingng:@"2010-10-01 04:00:00 +0900"]; if ( ([datStartDate compare:datEndDate]) == NSOrderedDescending ) { ... } 

Swift 2 version de la réponse acceptée:

 if firstDate.timeIntervalSinceDate(secondDate) > 0 { // firstDate is greater (further in the future) than secondDate } 
 if ([startDate compare:endDate] == NSOrderedAscending) { NSLog(@"startDate is EARLIER than endDate"); }