2016-09-17 13 views
-1

Я столкнулся с проблемой при сравнении двух NSDates. Я не получаю должного значения, когда я ошибаюсь.Сравнение двух NSDates, возвращающих 0 или равных

Сначала я сравнил метод compareNSDate, который возвращался 0, и затем я попытался преобразовать его в поплавок, вызвав timeIntervalSince1970, который дает тот же результат. То, что я делаю неправильно, я не получаю.

Вот простая попытка, которую я сделал.

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/YYYY"]; 

NSString *date1String = @"01/01/2016"; 
NSString *date2String = @"03/01/2016"; 

float date1 = [[formatter dateFromString:date1String] timeIntervalSince1970]; 
float date2 = [[formatter dateFromString:date2String] timeIntervalSince1970]; 

if (date1 > date2) { 
    NSLog(@"date1 is later than date2"); 

} else if (date1 < date2){ 
    NSLog(@"date1 is earlier than date2"); 

} else { 
    NSLog(@"date1 is Equal date2 %f \n%f",date1,date2); 
} 

ответ

0

Прежде всего вашей даты формиата неправильно, он должен быть dd/MM/yyyy также использовать compare для сравнения с NSDate объектов.

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd/MM/yyyy"]; 

NSString *date1String = @"01/01/2016"; 
NSString *date2String = @"03/01/2016"; 

NSDate *date1 = [formatter dateFromString:date1String]; 
NSDate *date2 = [formatter dateFromString:date2String]; 
if ([date1 compare:date2] == NSOrderedDescending) { 
    NSLog(@"date1 is later than date2"); 
} else if ([date1 compare:date2] == NSOrderedAscending) { 
    NSLog(@"date1 is earlier than date2"); 
} else { 
    NSLog(@"dates are the same"); 
} 
+0

Thanks, YYYY была проблема. Теперь он отображается правильно. :) –

+0

Если вы не измените YYYY на yyyy, вы не получите правильную дату. –

+1

Не используйте double, используйте NSTimerInterval. И обновите ответ соответствующим форматом даты. – rmaddy