我有一定数量的seconds
是从某个事件过去的。它存储在一个NSTimeInterval
数据类型。
我想把它转换成minutes
and seconds
.
例如,我有:“326.4”秒,我想将其转换为以下字符串:
“5:26”。
实现这一目标的最佳方法是什么?
Thanks.
简要描述;简介
- 如果您只想转换为分钟,Brian Ramsay 的答案会更方便。
- 如果您希望 Cocoa API 为您做这件事,并将您的 NSTimeInterval 不仅转换为分钟,还转换为天、月、周等,...我认为这是一种更通用的方法
-
使用 NSCalendar 方法:
创建2个NSDate,其差异是要转换的NSTimeInterval。 (如果您的 NSTimeInterval 来自比较 2 个 NSDate,则不需要执行此步骤,甚至不需要 NSTimeInterval)。
从 NSDateComponents 获取报价
示例代码
// 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 将为您完成这项艰苦的工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)