2016-07-13 4 views
-1

Я внедрил два textFields От и до в ViewController. Когда пользователь выбирает textField, он может выбрать дату из календаря. Выбранная дата сохраняется в TextField как YYYY-MM-dd.дата сравнения с текстового поля

И я внедрил кнопку расчета в ViewController. Когда заполняются два TextField, мне нужно выполнить некоторые работы.

Когда два textField заполнены и С TextField больше, я хочу, чтобы отобразить предупреждение, когда от TextField даты Больше чем TextField.

Как я могу сравнить его ...?

+0

Почему не эти поля 'объекты UIDatePicker'? – Droppy

ответ

0
NSDateFormatter * df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat: @"yyyy-MM-dd"]; 
    NSDate * dt1 ; 
    NSDate * dt2 ; 
    dt1 = [df dateFromString: txt1.text]; 
    dt2 = [df dateFromString: txt2.text]; 
    NSComparisonResult result = [dt1 compare: dt2]; 
    switch (result) { 
     case NSOrderedAscending: 
      NSLog(@"%@ is greater than %@", dt2, dt1); 
      break; 
     case NSOrderedDescending: 
      NSLog(@"%@ is less %@", dt2, dt1); 
      break; 
     case NSOrderedSame: 
      NSLog(@"%@ is equal to %@", dt2, dt1); 
      break; 
     default: 
      NSLog(@"erorr dates %@, %@", dt2, dt1); 
      break; 
    } 

Надеется, что это поможет ....

+0

@ Cyph3r вы проверили ответ? –

0

я думаю, что вы ищете эту функциональность ..

NSCalendar* currentCalendar = [NSCalendar currentCalendar]; 
    NSCalendarUnit unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute; 
    NSDateComponents *differenceComponents = [currentCalendar components:unitFlags fromDate:postdate toDate:[NSDate date] options:0]; 
    NSInteger yearDifference = [differenceComponents year]; 
    NSInteger monthDifference = [differenceComponents month]; 
    NSInteger dayDifference = [differenceComponents day]; 
    NSInteger hourDifference = [differenceComponents hour]; 
    NSInteger minuteDifference = [differenceComponents minute]; 

я надеюсь, что это поможет ..

0

Первого вам нужно преобразовать эту две строки строки текстового поля в объект NSDate и использовать compare: метод даты, чтобы сравнить дату.

NSString *dateString1 = @"2016-05-31"; //First text field value 
NSString *dateString2 = @"2016-05-31"; //Second text field value 
NSDateFormatter *dateFormatter=[NSDateFormatter new]; 
[dateFormatter setDateFormat:@"YYYY-MM-dd"]; 
NSDate *date1=[dateFormatter dateFromString:dateString1]; 
NSDate *date2=[dateFormatter dateFromString:dateString2]; 

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

@ user3182143, почему я удаляю свой код? этот код был создан мной. –

+0

Хорошо, тогда ждите, пока я увижу ответ. – user3182143

+0

Он также генерируется мной – user3182143

1

Идеальное решение

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 

NSString *textFieldDateString1 = @"2016-07-14"; 
NSString *textFieldDateString2 = @"2016-07-15"; 

NSDate *date1 = [dateFormatter dateFromString:textFieldDateString1]; 
NSDate *date2 = [dateFormatter dateFromString:textFieldDateString2]; 

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

Печатный Результат

date1 is earlier than date2 

Date Comparision

Compare Two dates

+0

Это * может * сбой, если строка даты не соответствует формату даты. Так не так прекрасно. Кроме того, другие опубликовали тот же ответ, прежде чем вы это сделали, поэтому неясно, что добавляют ваши ответы. – Droppy

+0

Как он может упасть? Попробуйте мой ответ. Если вы получите какой-либо сбой, пришлите мне этот отчет. – user3182143

+0

Я дал здесь простой ответ для пользователя. Если он получает дату с сервера, он должен сначала перенести его в строку. После этого он может конвертировать на дату, и он может напрямую сравнивать две даты. – user3182143

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