2012-01-15 1 views
0

엑스 코드에서 시간 범위 :더블 나는 세 <code>int</code> 년대있어

  • 수십 (초/10) 이제

, 내가 할 수 오전 MM :하십시오 NSString으로 같은 포맷

그러나 SS.TT

을 : 어떻게 시간 범위를 두 배로 그것을 밖으로 인쇄 할 수 있습니까? 나는 그것을 기본 방법으로 수행하기 위해 %과 같은 것을 사용해야한다.

엑스 코드에서 스마트 옵션이 있습니까?

감사합니다.

답변

2

이렇게하면됩니다. 나는 그것이 어떻게 작동하는지 보여주기 위해 여러 단계를 분리했습니다,하지만 당신은/아마 내가 제대로 이해하고 있다면이 당신의 목적을

// Assumes NSInteger values already exist for minutes, seconds and tens 

NSTimeInterval span = (minutes * 60) + seconds + ((double)tens/10.0); 

// Double the time-interval 
NSTimeInterval twiceSpan = span * 2.0; 

// Determine the components 
minutes = floor(twiceSpan/60.0); 
seconds = floor(twiceSpan - (minutes * 60.0)); 
tens = round((twiceSpan - (minutes * 60) - seconds) * 10.0); 

// Form a string to show the time as m:s.t where the seconds value is always two digits 
NSString *time = [NSString stringWithFormat: @"%i:%02i.%i", minutes, seconds, tens]; 
1

에 맞게 응축한다 수, 올바른 코코아 단위는 NSTimeInterval입니다. (초)을 포함하는 이중은 어느 - 그래서 당신은, 하나 NSTimeInterval들로 위의 모든 추가 2를 곱하면, 다음은 [NSDate initWithTimeInterval:sinceDate:][... dateWithString:]NSDate에서 등 어떤 꽤 인쇄를 표현할 수있다.

단지 간격을 표현하는 사람이라면 왜 NSInterval (또는 단지 초)에 넣지 않고 (seconds/60):(seconds%60).(tens) 또는 그 이상으로 표현할 수 있을지 모르겠다. 나에게 솔직한. 그것을 3 개의 ints로 나뉘게 유지하는 것은 나에게 어색한 것처럼 보인다. 그것은`double` 이후

+0

당신은'NSTimeInterval'에'%'를 할 수 없습니다. +1 나머지. – DarkDust

+0

때마다 당신이 할 수있는 NSTimeInterval으로 시간을 유지하기 위해, 더 나은 합의,하지만 그는 별도의 int ... – reddersky

+0

@DarkDust로를 가지고있는 경우 - 좋은 지적. 어쨌든 정수 수학을 적용하기 전에 프로세스의'(int)'또는'(long)'에 캐스트 할 것입니다. 왜냐하면 출력의 해당 부분에 대한 소수 초를 버리기를 원할 것이기 때문입니다. –