objective-c - 如何将 NSTimeInterval(秒)转换为分钟

标签 objective-c iphone nstimeinterval seconds minute

我有一定数量的 seconds 从某个事件传递过来。它存储在 NSTimeInterval 数据类型中。

我想把它转换成minutesseconds

例如,我有:“326.4”秒,我想将其转换为以下字符串: “5:26”。

实现这一目标的最佳方法是什么?

谢谢。

最佳答案

简要说明

  1. 如果您只想转换为分钟,Brian Ramsay 的答案会更方便。
  2. 如果您希望 Cocoa API 为您执行此操作,并将您的 NSTimeInterval 不仅转换为分钟,还转换为天、月、周等...我认为这是一种更通用的方法
  3. 使用 NSCalendar 方法:

    • (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts

    • “作为使用指定组件的 NSDateComponents 对象返回两个提供日期之间的差异”。来自 API 文档。

  4. 创建 2 个 NSDate,其区别在于您要转换的 NSTimeInterval。 (如果您的 NSTimeInterval 来自比较 2 个 NSDate,则无需执行此步骤,甚至不需要 NSTimeInterval)。

  5. 从 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 将为您完成繁重的工作。

关于objective-c - 如何将 NSTimeInterval(秒)转换为分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189252/

相关文章:

iphone 应用程序 NSNumber 内存泄漏

ios - UIButton 文本出现一段时间,它在 ios 中显示另一个空文本?

ios - 直接从 NSTimeInterval 到 NSDateComponents 到 NSString 转换?

iphone - 混合不同大小的声音文件

iOS 7 UINavigationController 过渡到 UITableView : black-translucent layer during animation

ios - 数组中的多个字典和检查重复键 - Objective C

iphone - Mac 在 MonoTouch 和 XCode 中开发的系统要求

iphone - 以编程方式从连接的 Mac 计算机获取 iOS 设备屏幕截图

Swift- 无法使用类型为(NSNumber、NSTimeinterval)的参数列表调用 '-'

iphone - ios 使用 AVFramework 捕获图像