2013-06-05 3 views
0

iam, сравнивая две даты, но когда я ввожу две даты в строковую переменную, то ее работаю, но когда iam передаёт эти данные, сравнивая метод, который не работает, почему?Сравнение NSDate, показывающее неправильное значение?

это код iam используя?

NSString *dateString [email protected]"2013-05-12 22:10:02"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
// this is imporant - we set our input date format to match our input string 
// if format doesn't match you'll get nil from your string, so be careful 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:MM:SS"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
// voila! 
dateFromString = [dateFormatter dateFromString:dateString]; 



NSString *dateString1 = @"2013-03-04 07:59:08"; 
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
// this is imporant - we set our input date format to match our input string 
// if format doesn't match you'll get nil from your string, so be careful 
[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:MM:SS"]; 
NSDate *dateFromString1 = [[NSDate alloc] init]; 
// voila! 
dateFromString1 = [dateFormatter dateFromString:dateString1]; 

if ([dateFromString compare:dateFromString1] == NSOrderedDescending) 
{ 
    NSLog(@"1 is later than 2"); 

} else if ([dateFromString compare:dateFromString1] == NSOrderedAscending) 
{ 
    NSLog(@"1 is earlier than 2"); 

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

} 

** При РМКО прохождении даты (NSString формат) в Methode

(int)compareDate:(NSString *)date1:(NSString *)date2 

в этом методе я писал выше сравнение кода так IAM призвание это Methode как

[self compareDate:date1:date2] 

и iam всегда получают «даты одинаковые» значение ???? когда я набираю дату вручную, чтобы получить точный ответ? Почему это? **

+1

Возможно, потому что они оба равны нулю. Проверьте строку формата. Обратите внимание, что вы используете MM в течение как минут, так и месяцев? '-___-' и SS вместо ss в секундах? '-______________________-' – borrrden

+0

ok i wikll проверить, что – Navi

ответ

2

Замените свой код на нижестоящий код. Формат «мм» составляет несколько минут и «ММ» в течение нескольких месяцев. и используйте «ss» в течение секунд, а не «SS». Прочтите документацию о яблоках для получения подробной информации о форматах даты.

NSString *dateString [email protected]"2013-05-12 22:10:02"; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    // this is imporant - we set our input date format to match our input string 
    // if format doesn't match you'll get nil from your string, so be careful 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    NSDate *dateFromString = [[NSDate alloc] init]; 
    // voila! 
    dateFromString = [dateFormatter dateFromString:dateString]; 



    NSString *dateString1 = @"2013-03-04 07:59:08"; 
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
    // this is imporant - we set our input date format to match our input string 
    // if format doesn't match you'll get nil from your string, so be careful 
    [dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    NSDate *dateFromString1 = [[NSDate alloc] init]; 
    // voila! 
    dateFromString1 = [dateFormatter dateFromString:dateString1]; 

    if ([dateFromString compare:dateFromString1] == NSOrderedDescending) 
    { 
     NSLog(@"1 is later than 2"); 

    } else if ([dateFromString compare:dateFromString1] == NSOrderedAscending) 
    { 
     NSLog(@"1 is earlier than 2"); 

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

    } 
+0

хорошо спасибо за ваш измененный ответ .... बहुत बहुत धन्यवाद – Navi

1

Проблема с использованием даты formatter.Make из mm вместо MM для минут и ss вместо SS за секунды.

[dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
+0

мм вместо MM для ** минут ** -1 – borrrden

+0

@borrrden извините, это была опечатка. Спасибо –

+1

Это бывает, удалил мой downvote, так как вы его исправили :) – borrrden

Смежные вопросы