2010-07-02 12 views
0

시간 계산에서 시간 : 분 : 초 형태로 도와 줄 수 있습니까? 하지만 시스템 시간이 필요합니다. (이 일시간까지 일) & ((1) 이후 초 하지만 올바른 방법으로 작동하지 않습니다 : 최소 : 그건 내가hr에서 시간을 계산하는 방법 : 분 :

내가 시간의 형태로 시간 계산을 만들려고이 코드를 만든위한거야 60 초 출력은 3600 초 출력이 1 : 1 : 00이지만 3601 초 출력이 잘못 된 후 61 초 출력이 0 : 1 : 71 (3) 이후에 0 : 1 : 60 (2) 여기

는 코드 다음하는 .m 파일에서

-(IBAction)start 
{  
    timer1 = [NSTimer scheduledTimerWithTimeInterval:(.01) target:self selector:@selector(timepassed) userInfo:nil repeats:YES];   
} 

-(void)timepassed 
{ 
    counter++; 
    if(sec==60) 
     sec=0; 
    else 
     sec=counter/100; 

    if(min==60) 
     min=0; 
    else 
     min=sec/60; 

    if(hr==24) 
     hr=0; 
    else 
     hr=min/60; 

    m1++; 
    NSString *l=[NSString stringWithFormat:@"%i:%i:%i",hr,min,sec]; 

    [m setText:l]; 
} 
+1

NSTimers는 여기에서하려는 것을 수행하기에 충분하지 않으므로이 용도로 사용하지 않는 것이 좋습니다. –

+0

나는 Joshua에 동의한다. 대신, NSDate를 사용하여 시작 시간을 기록한 다음 timeIntervalSinceNow를 호출하여 시간이 얼마나 경과했는지 확인하십시오. – Brian

+0

diff'ing 타임 스탬프가 훨씬 정확하다는 데 동의합니다. 그러나이 방법을 사용하면 하트 비트를 놓치지 않을 연속 카운터를 얻을 수 있습니다. 이것은 좋은 것이거나 그렇지 않을 수도 있습니다. – Eiko

답변

2
-(void) timepassed 
{ 
    counter++; 
    if (counter == 60) { secs++; counter = 0; } 
    if (secs == 60) { min++; secs = 0; } 
    if (min == 60) { hr++; min = 0; } 

    // Your usual output here 
} 

이것은 카운터 변수를 코드와 다르게 설정합니다. 즉 0에서 99까지 1/100 초만 저장됩니다.

시간을 hrs : 분 : 초로 변환하는 12 가지 알고리즘이 있는데, 이는 사용자 코드와 비슷한 것 중 하나입니다.

사이드 노트 : (이전 질문에도) 도움이되었던 답변을 수락하십시오. 이것은이 사이트에서 흔히있는 행동이며 사람들에게 도움을 줄 동기를 부여합니다.

관련 문제