2014-07-18 4 views
-1

이 코드를 사용하여 두 날짜를 비교하고 차이 수를 반환합니다. 나는 그것을 사용하여 분과 시간을 얻고 싶지만 같은 숫자를 얻는다.두 날짜를 NSDateComponents와 비교하십시오.

NSDate *todaysDate =[NSDate date]; 
NSDate *eventDate = [self.event objectForKey:@"eventDate"]; 

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSDayCalendarUnit 
                    fromDate: todaysDate toDate: eventDate options: 0]; 

NSInteger days = [components day]; 
NSInteger hours = [components hour]; 

NSLog(@"Number of days %ld", days); 
NSLog(@"Number of hours %ld", hours); 

EVENTDATE의 형식 "2014-08-08 13시 11분 0초 0000"

내가 항상 시간 또는 분의 수에 대한 대가로 얻을 것은 "9223372036854775807"입니다합니다.

+0

NSLogs에서 형식 문자열로'% zd'를 사용해보십시오. – Undo

+0

같은 출력 ..... – user3241911

+0

해당 값은 0x7FFFFFFFFFFFFFFF입니다. –

답변

0

프로그래밍 계산기에 "9223372036854775807"을 10 진수 값으로 입력하고 16 진수로 변환하면 0x7FFFFFFFFFFFFFFF가됩니다. 그것은 아마도 NSUndefinedDateComponent 상수이며 NSDateComponent를 만들 때 NSHourCalendarUnit 및 NSMinuteCalendarUnit을 사용하여 요청하지 않았기 때문에 NSDateComponents 객체에 요청 된 필드가 없다는 것을 의미합니다. "components :"매개 변수에서 지정한 필드 만 초기화됩니다. 요일 필드에는 올바른 값이 있어야합니다. 시간과 분을 얻으려면 다음 행을 변경해야합니다.

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSDayCalendarUnit 
              | NSHourCalendarUnit | NSMinuteCalendarUnit 
              fromDate: todaysDate toDate: eventDate options: 

];

관련 문제