2014-09-08 2 views
-2

나는 그런 시간을 가정 한 등 : 28.004 (일분 스물여덟) 또는 1 : 19 : 10.236 (일시간 열 아홉 분 십초) NSDate 또는 다른 코코아 클래스를 사용하면 어떻게 표현할 수 있습니까? 그렇다면 어떻게 밀리 초로 변환할까요? 마지막으로 일단 밀리 초 단위로 변환하면 위와 같이 적절한 시간 형식으로 다시 변환 할 수 있습니까?시간과 다시

십진법 정밀도는 모터 스포츠의 랩타임과 관련되므로 중요합니다.

+2

왜 NSDate입니까? 왜 'NSTimeInterval'은 간단한가요? – rmaddy

+1

동의; 그것은 날짜가 아니며 시간 간격입니다. – trojanfoe

+0

@rmaddy @trojanfoe 좀 더 자세히 설명해 주시겠습니까? 밀리 초를 처리하기 위해'NSTimeInterval'을 사용한다면, 어떻게 위에서 보여지는 형식으로 포맷 할 수 있습니까? –

답변

0

나는 이것을 NSDateNSDateFormatter의 조합을 사용하여 알아낼 수있었습니다. 간단한 수학을 사용하는 것보다 더 우아한 (IMO) 솔루션을 원했습니다.

// Set up the date formatter 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"HH:mm:ss.SSS"; 
// Translate the time into an instance of NSDate 
NSDate *date = [formatter dateFromString:@"00:01:28.004"]; 
// Get the time in seconds; includes 3 decimal place precision 
NSTimeInterval seconds = [date timeIntervalSince1970]; 
// <Do what ever with the seconds here> 
// Convert seconds back to an instance of NSDate 
NSDate *dateFromSeconds = [NSDate dateWithTimeIntervalSince1970:seconds]; 
// Get the human readable version in the proper HH:mm:ss.SSS format, for display 
NSString *timeToDisplay = [formatter stringFromDate:dateFromSeconds]); 

그리고이 모든 것이 훌륭하고 예상대로 작동합니다.

+0

'NSTimeInterval'은 초를 측정합니다. 그래서 변수 이름'milliseconds'는 혼란 스럽습니다. – trojanfoe

+0

더 명확하게 업데이트되었습니다. –

0

NSDate를 사용할 수 있습니다. 먼저 시간 간격을 계산하여 NSDate (문서 읽기!)를 설정 한 다음 날짜를 UTC로 포맷합니다. 물론 날짜를 형식화하는 경우 획기적인 날짜 (1/1/1970 또는 2001) 일 수 있지만 시간 (UTC 만 해당)이 올 바릅니다.

그러나 간단한 수학 (나누기 및 모듈로 나누기)은 거의 쉽습니다.