본문 바로가기

iPhone

ios 날짜 비교

NSDate - (NSComparisonResult)compare:(NSDate *)other 메서드로 비교하게 되면

return에

NSOrderedAscending (date보다)오래된날짜
NSOrderedSame 같은날짜
NSOrderedDescending 이후의날짜

로 나오게 된다 


NSDate 로 비교하게 될 경우 NSDate가 만들어진 시간에 따라서  같은 날짜여도 NSOrderedAscending 를 호출하는 경우가 있는데 이 때에는  NSDateComponents을 사용하면 시간과 관계없이 단순 날짜만 비교하게 된다.

    NSDate * startDate = [NSDate date];

    

    NSDate * endDate = [NSDate dateWithTimeIntervalSinceNow:60*60*24];

   

    NSDateComponents *dateComp = [[NSCalendar currentCalendar] components:NSDayCalendarUnit fromDate:startDate toDate:endDate options:0];


   NSLog(@"Day    : %d", [dateComp day]);


[dateComp day]에는 날짜의 차이인 1이 들어가 있으며 같은 날짜의 경우 0 해당일보다 작으면 음수로 나오게 된다. 


NSDateFormatter 을 사용 한 간단 비교 방법

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

        [dateFormat setDateFormat:@"yyyyMMdd"];


NSDate *firstDate, *secondDate;   //이곳에 비교 날짜를 세팅 하면 됩니다.


//숫자로 변환

int getNowDate = [[dateFormat stringFromDate:firstDate]intValue], 

    getDate =  [[dateFormat stringFromDate:secondDate]intValue];


나온 2가지 숫자를 비교하여 처리하면 됩니다.