两个NSDate对象之间的差异 – 结果也是一个NSDate
我有两个NSDate对象,我想两者之间的差异,结果应该再次是一个NSDate对象。 任何想法如何实现这一目标?
在这里,我试图解决一个独特的问题,我必须找出经过的时间,然后本地化经过的时间。 我可以本地化,如果我已经在NSDate对象的时间。 所以想到创build一个NSDate对象,其时间部分与两个date之间的时间间隔相同,以便我可以使用NSDateFormatter来本地化它。
 NSDate代表一个实例,因此将一个时间间隔表示为一个NSDate是没有意义的。 你想要的是NSDateComponents : 
 NSDate *dateA; NSDate *dateB; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:dateA toDate:dateB options:0]; NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year); 
如果你从2005年5月5日减去12/12/2001,那么date是多less? 两个date之间的时间距离不能是一个date,总是有某种间隔。 您可以使用timeIntervalSinceDate:来计算时间间隔。
要本地化您可以尝试以下步骤:
- 
你可以使用带有dateFromComponents的NSCalendar:传入一个NSDateComponents 。 
- 
打破一个timeInterval到NSDateComponents看看我如何分解NSTimeInterval到iPhone,年,月,日,小时,分钟和秒钟? 。 
- 
最后使用NSDateFormatter和initWithDateFormat:allowNaturalLanguage:获取您的本地化string。 date格式string语法显示不同的占位符。 
 从NSDate类的参考,你有实例方法来做到这一点 – 
-  如何比较两个NSDatevariables?  Ans: isEqualToDate:
-  如何find两个NSDatevariables之间的区别?  Ans: timeIntervalSinceDate:
- 如何从NSDatevariables获取分钟,小时和天的单独值? 链接
 您可以使用NSDate的timeIntervalSinceDate:来计算两个date之间的时间间隔timeIntervalSinceDate: ,但是将时间间隔表示为date没有任何意义。 
在NSDate中使用-compare有一个简单的方法:
 NSDate *dateA = [NSDate dateWithTimeIntervalSinceNow:100]; NSDate *dateB = [NSDate dateWithTimeIntervalSinceNow:200]; NSDate *myDate = [NSDate dateWithTimeIntervalSinceNow:150]; NSArray *dateArray = [NSArray arrayWithObjects:dateA, dateB, myDate, nil]; NSArray *sortedArray = [dateArray sortedArrayUsingSelector:@selector(compare:)]; if ([myDate isEqualToDate:[sortedArray objectAtIndex:1]]) NSLog(@"myDatea between dateA and dateB");