请选择 进入手机版 | 继续访问电脑版

[IOS] IOS NSTimeInterval利用 案例详解

[复制链接]
查看60 | 回复11 | 2021-9-13 16:37:20 | 显示全部楼层 |阅读模式

一 ios 获取时间间隔

想在程序开始或者进入某个界面 ,到竣事 程序或退出某个界面,获取到这个持续时间. 获取到这个时间还必要 转化一个取得时分秒.
  1. -(NSString *)getCurrentTime
  2. {
  3. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  4. [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  5. NSString *dateTime = [formatter stringFromDate:[NSDate date]];
  6. self.startTime = dateTime;
  7. return startTime;
  8. }
复制代码

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

  1. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  2. [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  3. NSDate *date1 = [formatter dateFromString:startTime];
  4. NSDate *date2 = [NSDate date];
  5. NSTimeInterval aTimer = [date2 timeIntervalSinceDate:date1];
  6. int hour = (int)(aTimer/3600);
  7. int minute = (int)(aTimer - hour*3600)/60;
  8. int second = aTimer - hour*3600 - minute*60;
  9. NSString *dural = [NSString stringWithFormat:@"%d时%d分%d秒", hour, minute,second];
复制代码

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

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

1. 伪代码:

  1. minutes = floor(326.4/60)
  2. 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 示例代码

  1. // The time interval
  2. NSTimeInterval theTimeInterval = 326.4;
  3. // Get the system calendar
  4. NSCalendar *sysCalendar = [NSCalendar currentCalendar];
  5. // Create the NSDates
  6. NSDate *date1 = [[NSDate alloc] init];
  7. NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1];
  8. // Get conversion to months, days, hours, minutes
  9. unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
  10. NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];
  11. NSLog(@"Conversion: %dmin %dhours %ddays %dmoths",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]);
  12. [date1 release];
  13. [date2 release];
复制代码

已知标题 太多的只是一个转换,你是对的,但是这是API怎样 工作的。 我的建议:假如 你要管理你的NSDate和NSCalendar,该API将做艰苦的工作得当 你。 

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

  1. double progress;
  2. int minutes = floor(progress/60);
  3. int seconds = trunc(progress - minutes * 60);
复制代码

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

  1. - (NSString*)formattedStringForDuration:(NSTimeInterval)duration
  2. {
  3. NSInteger minutes = floor(duration/60);
  4. NSInteger seconds = round(duration - minutes * 60);
  5. return [NSString stringWithFormat:@"%d:%02d", minutes, seconds];
  6. }
复制代码

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

  1. NSTimeInterval timeInterval = 326.4;
  2. long seconds = lroundf(timeInterval); // Modulo (%) operator below needs int or long
  3. int hour = seconds / 3600
  4. int mins = (seconds % 3600) / 60;
  5. int secs = seconds % 60;
复制代码

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

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

到此这篇关于IOS NSTimeInterval使用 案例详解的文章就先容 到这了,更多相干 IOS NSTimeInterval使用 内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 小雨敲窗y | 2021-9-20 20:59:20 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,他卖的服务器是永久的,我们的网站用 服务器都是在这家买的,你可以去试试。访问地址:http://fwq.mxswl.com
回复

使用道具 举报

avatar 豪哥692 | 2021-9-25 09:46:29 | 显示全部楼层
admin楼主很有经验啊!
回复

使用道具 举报

avatar 无热天龙中 | 2021-9-30 15:00:06 | 显示全部楼层
没人理我,好伤心啊!
回复

使用道具 举报

avatar 李中文1 | 2021-10-15 21:34:41 | 显示全部楼层
顶!顶!顶!
回复

使用道具 举报

avatar 123456879 | 2021-10-16 13:17:59 | 显示全部楼层
看帖不回帖的人就是耍流氓,我回复了!
回复

使用道具 举报

骂人也是要有水平的!
回复

使用道具 举报

admin楼主内心很强大!
回复

使用道具 举报

avatar dxf17 | 昨天 01:59 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,影视频道的网站所有电影和连续剧都可以免费看的。访问地址:http://tv.mxswl.com
回复

使用道具 举报

avatar 123457783 | 昨天 08:04 | 显示全部楼层
看了这么多帖子,第一次看到这么高质量内容!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则