首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTimeInterval格式设置

NSTimeInterval格式设置
EN

Stack Overflow用户
提问于 2011-11-15 05:04:03
回答 5查看 21.8K关注 0票数 42

我想把我的NSTimeInterval格式化为00:00:00 (时,分,秒)的字符串。做这件事最好的方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-15 05:14:16

代码语言:javascript
复制
NSTimeInterval interval = ...;    
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];    
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSString *formattedDate = [dateFormatter stringFromDate:date];
NSLog(@"hh:mm:ss %@", formattedDate);
票数 27
EN

Stack Overflow用户

发布于 2014-11-10 13:16:52

从iOS 8.0开始,现在有了NSDateComponentsFormatter,它有一个stringFromTimeInterval:方法。

代码语言:javascript
复制
[[NSDateComponentsFormatter new] stringFromTimeInterval:timeInterval];
票数 107
EN

Stack Overflow用户

发布于 2011-11-15 05:18:07

“最好的”是主观的。最简单的方法是:

代码语言:javascript
复制
unsigned int seconds = (unsigned int)round(myTimeInterval);
NSString *string = [NSString stringWithFormat:@"%02u:%02u:%02u",
    seconds / 3600, (seconds / 60) % 60, seconds % 60];

更新

从MacOSX8.0和MacOSX10.10 (Yosemite)开始,如果您需要符合区域设置的解决方案,可以使用NSDateComponentsFormatter。示例:

代码语言:javascript
复制
NSTimeInterval interval = 1234.56;
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute |
    NSCalendarUnitSecond;
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad;
NSString *string = [formatter stringFromTimeInterval:interval];
NSLog(@"%@", string);
// output: 0:20:34

但是,我没有看到一种方法来强制它输出一个小时的两位数,所以如果这对你很重要,你需要使用不同的解决方案。

票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8128083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档