2011-04-24 48 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