2010-07-02 106 views
0

有人能幫我從hr:min:sec形式的時間計算中解脫出來。但我確實需要系統時間。這對我做了這個代碼如何計算hr:min:sec中的時間

我儘量讓時間計算人力資源的形式:分:秒 ,但它不能在正確的方式工作&((1)後 的(它的工作直到有小時)在3600秒輸出爲1:1:00之後61秒輸出爲0:1:71(3)之後60秒輸出爲0:1:60,但在3601秒輸出錯誤之後(3)

下面是代碼:

在.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不夠準確,無法完成您在這裏要做的事情,我建議不要將它們用於此目的。 – 2010-07-02 13:29:12

+0

我同意約書亞。相反,使用NSDate記錄開始時間,然後調用timeIntervalSinceNow來查看已經過了多少時間。 – Brian 2010-07-02 13:35:25

+0

我同意diff'ing時間戳更準確。但是,這種方法可以確保你得到一個不會錯過心跳的連續計數器。這可能會或可能不會是一件好事。 – Eiko 2010-07-02 13:46:26

回答

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:mins:secs,這只是其中一個與您的代碼類似的算法。

附註:請接受對您有幫助的答案(也是針對您的舊問題),這是本網站的常見行爲,並保持人們的積極性來幫助您。