2016-07-13 8 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

관련 문제