ios - 如何获得两个具有多个小数位的 NSDates 之间的年份差异

标签 ios objective-c

我有一个 NSTimeInterval 从两个 NSDate 对象计算出来的。如何将此间隔的年份值返回为具有多个小数位的 doubleCGFloat

比方说,我有某人的 dob,我想将他的年龄返回为小数形式,例如 xx.xxxxxxxx 岁。

最佳答案

你需要使用 NSCalendar。并与 NSDate 对象有所不同。这是一个例子:

// The time interval 
NSTimeInterval theTimeInterval = ...;

// 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
NSCalendarUnit unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:date1  toDate:date2  options:0];
NSLog(@"Break down: %i min : %i hours : %i days : %i months", [breakdownInfo minute], [breakdownInfo hour], [breakdownInfo day], [breakdownInfo month]);

关于ios - 如何获得两个具有多个小数位的 NSDates 之间的年份差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246583/

相关文章:

ios - Xamarin iOS 调试器未命中断点

ios - #ifdef DEBUG 与 #if DEBUG

objective-c - 有没有办法知道哪个 Collection View 单元格在特定点?

ios - 使用 native iOS 模块扩展 Titanium

ios - 更改导航栏ios6和ios7的颜色

JavaScript 显示相同的键码

ios - 我正在尝试从一个屏幕到另一个屏幕重新创建表格 View ,但不断收到错误信号 sigabrt

ios - 以客户身份通过​​ iOS 应用程序登录 BigCommerce API

ios - 刷新 ios 上的重复数据

ios - 从用户输入的 UITextField 创建没有硬编码范围的 NSAttributedString