2012-06-05 1 views
0

이동 갈 시간을 카운트 다운을 표시하는 카운트 다운을 작성하려고합니다.정확한 타이밍과 NSDateComponents

아래 예제는 10 초로 설정되어 있지만 출력은 8 초입니다.

NSDate *currentDate = [NSDate date]; 
NSDate *finishDate = [NSDate dateWithTimeInterval:10 sinceDate:currentDate]; 

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

NSDateComponents *components = [calendar components:NSSecondCalendarUnit|NSMinuteCalendarUnit|NSHourCalendarUnit | NSDayCalendarUnit| NSMonthCalendarUnit | NSYearCalendarUnit 
              fromDate:currentDate 
              toDate:finishDate 
              options:0]; 
NSInteger hour_ = [components hour]; 
NSInteger minute_ = [components minute]; 
NSInteger second_ = [components second]; 

로그인

currentDate = 2012-06-05 03:13:10 +0000 
finishDate_ = 2012-06-05 03:13:19 +0000 
second_ = 8 
+0

이것은 실제로 "타이밍"이 아니라 더 많은 날짜 계산에 유의하십시오 ... – lnafziger

답변

0

글쎄, 난 그냥 복사 코드를 붙여.

2012-06-05 00:19:34.341 Testing App[59813:fb03] 2012-06-05 04:19:34 +0000 
2012-06-05 00:19:34.342 Testing App[59813:fb03] 2012-06-05 04:19:44 +0000 
2012-06-05 00:19:34.343 Testing App[59813:fb03] 0, 0, 10 

당신이 다른 버전을 사용하고 있습니까 :

NSLog(@"%@", currentDate); 
NSLog(@"%@", finishDate); 
NSLog(@"%d, %d, %d", hour_, minute_, second_); 

그것은 아이폰 OS 5.1을 실행하는 아이 패드 시뮬레이터에 엑스 코드 4.3.2을 사용하여 완벽하게 일 : 나는 바닥에이 라인을 추가?

+0

나는 정확하게 그 버전을 사용하고 있습니다. 현재 및 종료 날짜는 어떻게됩니까? – daidai

+0

현실은이 코드가 실제로 일어나고있는 것의 단순화 된 버전이라는 것입니다. 위의 코드를 복사하여 동일한 결과를 얻었으므로 오프셋을 유발하는 다른 작업을 수행하는 데 소요되는 시간과 관련이 있어야합니다. – daidai

+0

시작 시간에 시간을 추가하기 때문에 계산을위한 추가 시간은 중요하지 않습니다. 이것은 간단한 수학입니다 .... – lnafziger