2011-04-24 72 views
1

我試圖獲得計時器的總分鐘數。我已經有了秒鐘的工作。這是我如何得到「總秒數」:如何獲得「總分鐘數」(TIMER)

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *comps = [gregorian components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:time]; 

NSInteger hour = [comps hour]; 
NSInteger minute = [comps minute]; 

NSLog(@"Hour:%i", hour); 
NSLog(@"minute:%i", minute); 

NSInteger secs =hour * 60 * 60 + minute * 60; 

NSNumber *elapsedSeconds = [[NSNumber alloc] initWithInt:secs]; 
NSDictionary *myDict = [NSDictionary dictionaryWithObject:elapsedSeconds forKey:@"TotalSeconds"]; 
+0

除非使用GC,否則不要忘記釋放或自動釋放已分配的對象。 – 2011-04-24 21:50:41

回答

1

這會給你牆上時鐘的時間,而不是數量(任何時間單位)已經過去。

要計算經過時間,請在啓動時將時間作爲NSTimeInterval(秒數),然後在每次更新經過時間的顯示時(包括完成時)再次獲取該時間。從較晚的時間減去較早的時間,結果將是經過的秒數。

您可以通過重複的劃分及其餘部分將其分解爲幾天,幾小時,幾分鐘和幾秒。對於後者,請使用fmodremainder函數(%運算符不適用於浮點值)。將總秒數除以60.0即可獲得分鐘數;剩餘時間將是分鐘後的秒數(例如,613/60 = 10分鐘; fmod(613, 60) = 13秒)。按照總分鐘數來計算小時數和分鐘數。當然,幾天以24小時作爲除數。

+0

非常好,謝謝 – Nekbeth 2012-09-24 20:09:43