Сравните две даты в ObjectiveC?

У меня есть две даты, такие как currentdate и getDate, я хочу сравнить getdate со старым, новым или равным.

Я попробовал это для вашей справки:

    NSDate *today = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MM/dd/yyyy"];
    NSString *currentDate = [dateFormatter stringFromDate:today]; 
    // Current_date (7/26/2013)

    NSString *getdate=[outDateformatter1 stringFromDate:bDt1]; 
   // Get_date (7/26/2010)

    NSComparisonResult result;        
    result = [currentDate compare:getdate]; // comparing two dates
    if(result==NSOrderedAscending)
        NSLog(@"today is less");

  I need this, Original result getdate is old date.

Но это не работает должным образом, пожалуйста, предложите мне это.

Заранее спасибо


person SampathKumar    schedule 26.07.2013    source источник
comment
Обратитесь к этой ссылке stackoverflow.com/questions/ 7901061/   -  person Pradeep    schedule 26.07.2013
comment
Когда вы сравниваете даты, сравнивайте объекты NSDate, а не строки, которые вы создаете из них, и используйте isEqualToDate:.   -  person rdelmar    schedule 26.07.2013
comment
Сравните объекты даты, а не строки.   -  person βhargavḯ    schedule 26.07.2013
comment
@iOSDeveloper смотрите мой ответ по этой ссылке stackoverflow.com/questions/13758253/, а также использовать NSDate вместо NSString для метода compare:   -  person Paras Joshi    schedule 26.07.2013


Ответы (3)


Используйте метод compare.

if ([currentdate compare: getDate] == NSOrderedDescending) {
    NSLog(@"currentdate is later than getDate");        

} else if ([currentdate compare:getDate] == NSOrderedAscending) {
    NSLog(@"currentdate is earlier than getDate");

} else {
    NSLog(@"dates are the same");

}
person Shamsudheen TK    schedule 26.07.2013

for that you have to import NSDate-Utilities.h and .m file. 

NSDateFormatter *df=[[NSDateFormatter alloc] init]; [df setDateFormat:@"ММ/дд/гггг"];

float oldDate = [[df dateFromString:[dic valueForKey:@"end_date"]] timeIntervalSinceNow];

 if (oldDate < 0) {
     //past date
}
else if (oldDate > 0){
    //future date
}
else{
    //same date
}
person Mital    schedule 26.07.2013

person    schedule
comment
На самом деле getdate не является постоянной величиной. - person SampathKumar; 26.07.2013
comment
endDate = [formatter dateFromString:getdate]; - person Rajneesh071; 26.07.2013