我想把我的NSTimeInterval格式化为00:00:00 (时,分,秒)的字符串。做这件事最好的方法是什么?
发布于 2011-11-15 05:14:16
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);发布于 2014-11-10 13:16:52
从iOS 8.0开始,现在有了NSDateComponentsFormatter,它有一个stringFromTimeInterval:方法。
[[NSDateComponentsFormatter new] stringFromTimeInterval:timeInterval];发布于 2011-11-15 05:18:07
“最好的”是主观的。最简单的方法是:
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。示例:
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但是,我没有看到一种方法来强制它输出一个小时的两位数,所以如果这对你很重要,你需要使用不同的解决方案。
https://stackoverflow.com/questions/8128083
复制相似问题