2009-12-15 3 views
1

나는 내 프로그램에서 다음 코드를 가지고 :- [NSCalendar ordinalityOfUnit : inUnit : forDate :]이 작동하지 않습니까?

NSUInteger currentMinuteOrdinal = [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit inUnit:NSEraCalendarUnit forDate:[NSDate date]]; 
NSUInteger passedInMinuteOrdinal = [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit inUnit:NSEraCalendarUnit forDate:passedInDate]; 
NSUInteger minuteDifference = currentMinuteOrdinal - passedInMinuteOrdinal; 

현재 시간 6:09 pm에 오늘이다. 건네받은 시간은 오늘 오후 4시 17 분입니다. (저는이 값들이 정확하다는 것을 알기 위해 디버거의 값들을보고 있습니다.) 그러나이 두 값은 항상 같은 값으로 나오므로 '분 차이'를 0으로 만듭니다.

작업? 아니면 내가 끔찍한 일을하고있는 걸까요?

감사합니다.

답변

2

코드는, 내가 지정한대로 passedInDate, I 설치 날짜를 처리하는 방법을 볼 수 없습니다 (내가 붙여 복사 /) 나를 위해 작동하는 것 같다 :이 경우

NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"]; 

//NSDate * dateA = [NSDate date]; 
NSDate * dateA = [formatter dateFromString:@"2009-12-15 06:09:00 +1100"]; 
NSDate * dateB = [formatter dateFromString:@"2009-12-15 04:17:00 +1100"]; 

NSUInteger currentMinuteOrdinal = 
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit 
              inUnit:NSEraCalendarUnit 
              forDate:dateA];  // current 

NSUInteger passedInMinuteOrdinal = 
    [[NSCalendar currentCalendar] ordinalityOfUnit:NSMinuteCalendarUnit 
              inUnit:NSEraCalendarUnit 
              forDate:dateB];  // passed in 

NSUInteger minuteDifference = currentMinuteOrdinal - passedInMinuteOrdinal; 

NSLog(@" currentMinuteOrdinal: %d", currentMinuteOrdinal); 
NSLog(@"passedInMinuteOrdinal: %d", passedInMinuteOrdinal); 
NSLog(@"  minuteDifference: %d", minuteDifference); 

출력 :

2009-12-15 21:51:46.215 x[50036:903] currentMinuteOrdinal: 1056606130 
2009-12-15 21:51:46.216 x[50036:903] passedInMinuteOrdinal: 1056606018 
2009-12-15 21:51:46.217 x[50036:903]  minuteDifference: 112