服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - IOS NSTimeInterval使用案例详解

IOS NSTimeInterval使用案例详解

2021-12-28 17:18conanwin IOS

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

一 ios 获取时间间隔

想在程序开始或者进入某个界面 ,到结束程序或退出某个界面,获取到这个持续时间. 获取到这个时间还需要转化一个取得时分秒.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-(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]; 在结束时的方法里写如下代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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. 伪代码:

?
1
2
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 示例代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
// The time interval
NSTimeInterval theTimeInterval = 326.4;
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];
// Create the NSDates
NSDate *date1 = [[NSDate alloc] init];
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1];
// Get conversion to months, days, hours, minutes
unsigned 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而不是...

?
1
2
3
double progress;
int minutes = floor(progress/60);
int seconds = trunc(progress - minutes * 60);

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

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

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

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

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

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

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

原文链接:https://www.cnblogs.com/conanwin/p/4871857.html

延伸 · 阅读

精彩推荐
  • IOS谈一谈iOS单例模式

    谈一谈iOS单例模式

    这篇文章主要和大家谈一谈iOS中的单例模式,单例模式是一种常用的软件设计模式,想要深入了解iOS单例模式的朋友可以参考一下...

    彭盛凇11872021-01-19
  • IOSiOS中时间与时间戳的相互转化实例代码

    iOS中时间与时间戳的相互转化实例代码

    这篇文章主要介绍了iOS中时间与时间戳的相互转化实例代码,非常具有实用价值,需要的朋友可以参考下。...

    张无忌!4812021-03-09
  • IOSiOS常见的几个修饰词深入讲解

    iOS常见的几个修饰词深入讲解

    这篇文章主要给大家介绍了关于iOS常见的几个修饰词的相关资料,iOS修饰词包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通过示...

    郡王丶千夜7422021-05-10
  • IOSIOS网络请求之AFNetWorking 3.x 使用详情

    IOS网络请求之AFNetWorking 3.x 使用详情

    本篇文章主要介绍了IOS网络请求之AFNetWorking 3.x 使用详情,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    总李写代码6892021-03-04
  • IOSiOS APP实现微信H5支付示例总结

    iOS APP实现微信H5支付示例总结

    这篇文章主要介绍了iOS APP实现微信H5支付示例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    一张小A11332021-06-01
  • IOSiOS10 Xcode8适配7个常见问题汇总

    iOS10 Xcode8适配7个常见问题汇总

    这篇文章主要为大家详细汇总了iOS10 Xcode8适配7个常见问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    索马里猫10332021-02-01
  • IOSxcode8提交ipa失败无法构建版本问题的解决方案

    xcode8提交ipa失败无法构建版本问题的解决方案

    xcode升级到xcode8后发现构建不了新的版本。怎么解决呢?下面小编给大家带来了xcode8提交ipa失败无法构建版本问题的解决方案,非常不错,一起看看吧...

    Cinna丶7542021-02-03
  • IOSiOS逆向教程之logify跟踪方法的调用

    iOS逆向教程之logify跟踪方法的调用

    这篇文章主要给大家介绍了关于iOS逆向教程之logify跟踪方法调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    Mr.Guo11472021-04-28