hem*_*ker 1 time objective-c nsdatecomponents
目前,我正在使用以下小数分钟记录两个事件之间的时间:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
CGFloat hour = [dateComponents hour];
CGFloat minute = [dateComponents minute];
CGFloat second = [dateComponents second];
//set start time in decimal minutes
CGFloat startTime = ((hour*3600.0)+(minute*60.0)+(second))*.016666;
//do work...
//set end time in decimal minutes
CGFloat endTime = ((hour*3600.0)+(minute*60.0)+(second))*.016666;
//calculate time elapsed in decimal minutes
CGFloat totalTime = endTime-startTime;
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我只是在几秒钟内获得时间然后转换为小数分钟.因此,我得到的唯一值是0.016663
(十进制分钟中的一秒),0.033325
(十进制分钟中的两秒),0.049988
(十进制分钟中的三秒)等等.我没有得到任何值.有什么方法可以让我得到更准确的时间吗?我检查,看看是否NSDateComponents
有一个millisecond
属性或诸如此类的东西,但我无法找到任何.
谢谢!
你也可以使用CFAbsoluteTimeGetCurrent(),它返回一个双倍的包含时间,以秒为单位和几分之一秒:
CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent();
Run Code Online (Sandbox Code Playgroud)
然后,您可以计算以秒为单位的经过时间和几分之一秒:
elapsed = CFAbsoluteTimeGetCurrent() - startTime;
NSLog(@"Elapsed Time: %0.3f seconds", elapsed);
Run Code Online (Sandbox Code Playgroud)
我喜欢在我的app委托中使用调试代码(#ifdef DEBUG),并在我的第一个视图控制器中的viewDidAppear中报告已用的启动时间,以便在开发时能够密切关注它.
归档时间: |
|
查看次数: |
1051 次 |
最近记录: |