NSTimeInterval
은 그 이름에서 암시하는 바와 같이 NSDate
과 같은 것을 나타내지 않습니다. NSDate
은 이며 시간은입니다. 시간 간격은 시간의 연장입니다. 일정한 간격에서 포인트를 얻으려면 다른 포인트가 있어야합니다. 귀하의 질문은 "나는이 보드에서 12 인치를 자리로 어떻게 변환합니까?"라고 묻는 것과 같습니다. 글쎄, 12 인치 시작 에서 어디?
참조 날짜를 선택해야합니다. 카운터를 시작한 시간을 나타내는 NSDate
일 가능성이 큽니다. 그럼 당신은 +[NSDate dateWithTimeInterval:sinceDate:]
또는 -[NSDate dateByAddingTimeInterval:]
을 사용할 수 있습니다. 그렇습니다. 나는 당신이 이것을 거꾸로 생각하고 있다고 확신합니다. 시작 지점 이후 경과 한 시간, 즉 간격 인을 현재 시간이 아닌 현재 시간으로 표시하려고합니다. 디스플레이를 업데이트 할 때마다 새 간격을 사용해야합니다. 예를 들어 (업데이트를 수행하기 위해 주기적으로 타이머 발사를 가정) :
- (void) updateElapsedTimeDisplay: (NSTimer *)tim {
// You could also have stored the start time using
// CFAbsoluteTimeGetCurrent()
NSTimeInterval elapsedTime = [startDate timeIntervalSinceNow];
// Divide the interval by 3600 and keep the quotient and remainder
div_t h = div(elapsedTime, 3600);
int hours = h.quot;
// Divide the remainder by 60; the quotient is minutes, the remainder
// is seconds.
div_t m = div(h.rem, 60);
int minutes = m.quot;
int seconds = m.rem;
// If you want to get the individual digits of the units, use div again
// with a divisor of 10.
NSLog(@"%d:%d:%d", hours, minutes, seconds);
}
완벽하게! 내가 필요한 것! – hfossli