IOS(NSTimeInterval使用案例详解)

这篇文章主要介绍了IOSNSTimeInterval使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

IOS,NSTimeInterval使用案例详解,久久派带你了解更多相关信息。

一 ios 获取时间间隔

想在程序开始或者进入某个界面 ,到结束程序或退出某个界面,获取到这个持续时间. 获取到这个时间还需要转化一个取得时分秒.

-(NSString *)getCurrentTime{    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    [formatter setDateFormat:@\"yyyy-MM-dd HH:mm:ss\"];    NSString *dateTime = [formatter stringFromDate:[NSDate date]];    self.startTime = dateTime;    return startTime;}

date1代表开始时间,在开始计时的地方调用 [self getCurrentTime]; 在结束时的方法里写如下代码:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setDateFormat:@\"yyyy-MM-dd HH:mm:ss\"];NSDate *date1 = [formatter dateFromString:startTime];NSDate *date2 = [NSDate date];NSTimeInterval aTimer = [date2 timeIntervalSinceDate:date1]; int hour = (int)(aTimer/3600);int minute = (int)(aTimer - hour*3600)/60;int second = aTimer - hour*3600 - minute*60;NSString *dural = [NSString stringWithFormat:@\"%d时%d分%d秒\", hour, minute,second];

二 我想把它转换成分钟和秒。

比如我有:“326.4”秒,我想把它转换成下面的字符串: “5:26”。 什么是实现这一目标的最佳方法是什么?

1. 伪代码:

minutes = floor(326.4/60)seconds = round(326.4 - minutes * 60)

2. 简述 从布赖恩・拉姆齐答案是更方便的,如果你只是想转换为分钟。 如果你想Cocoa API的为你做它和转换您不仅分钟,但也给天,月,星期等,…我认为这是一个更通用的方法 使用

(NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts“返回,作为NSDateComponents两者之间的差异提供的日期”。从API 创建2 NSDate的 CodeGo.net,其区别是你要转换。 (如果你的2 NSDate的你不需要做这一步,你甚至不需要的 让你的quotes从NSDateComponents 示例代码

// The time interval NSTimeInterval theTimeInterval = 326.4;// Get the system calendarNSCalendar *sysCalendar = [NSCalendar currentCalendar];// Create the NSDatesNSDate *date1 = [[NSDate alloc] init];NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1]; // Get conversion to months, days, hours, minutesunsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];NSLog(@\"Conversion: %dmin %dhours %ddays %dmoths\",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]);[date1 release];[date2 release];

已知问题 太多的只是一个转换,你是对的,但是这是API如何工作的。 我的建议:如果你要管理你的NSDate和NSCalendar,该API将做艰苦的工作适合你。 

3. ,作为一个堆栈处女…我不知道如何回答布赖恩・拉姆齐的回答… 使用圆不会为59.5和59.99999之间第二值工作。第二个值将是60在此期间。使用TRUNC而不是…

double progress;int minutes = floor(progress/60);int seconds = trunc(progress - minutes * 60);

4. 布赖恩・拉姆齐的代码,去pseudofied:

- (NSString*)formattedStringForDuration:(NSTimeInterval)duration{ NSInteger minutes = floor(duration/60); NSInteger seconds = round(duration - minutes * 60); return [NSString stringWithFormat:@\"%d:%02d\", minutes, seconds];}

5. 所有这些看起来比他们需要!这里有一个简短而亲切的方式来转换的时间间隔为小时,分钟和秒:

NSTimeInterval timeInterval = 326.4;long seconds = lroundf(timeInterval); // Modulo (%) operator below needs int or longint hour = seconds / 3600int mins = (seconds % 3600) / 60;int secs = seconds % 60;

请注意,当你把一个浮点数转换为整数,你得到楼()自动完成,但你可以,如果要是让你感觉更好:-)它添加到的前两个 

6. 因为它本质上是一个双… 60.0划分和提取的组成部分和小数部分。 的组成部分,将是分钟的整数。 再乘以小数部分按60.0。 其结果将是剩下秒。

到此这篇关于IOS NSTimeInterval使用案例详解的文章就介绍到这了,更多相关IOS NSTimeInterval使用内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/18273.html

(0)
nan
上一篇 2021-08-28
下一篇 2021-08-28

相关推荐

发表回复

登录后才能评论