两个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");