两个NSDate对象之间的差异 - 结果也是一个NSDate

Abh*_*nav 53 iphone cocoa-touch objective-c nsdate ios

我有两个NSDate对象,我想要两者之间的差异,结果应该再次是一个NSDate对象.知道怎么做到这一点?

在这里,我试图解决一个独特的问题,我必须找出经过的时间,然后本地化经过的时间.如果我在NSDate对象中有经过的时间,我可以本地化它.所以想到创建一个NSDate对象,它的时间组件与两个日期之间的时间间隔相同,这样我就可以使用NSDateFormatter对它进行本地化.

Nic*_*rge 151

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);
Run Code Online (Sandbox Code Playgroud)


Nic*_*ver 18

如果你从2002年5月5日减去12/12/2001,这将是什么日期?两个日期之间的时间距离不能是日期,它总是某种间隔.您可以使用timeIntervalSinceDate:来计算间隔.

要进行本地化,您可以尝试以下步骤:


Jha*_*iya 7

NSDate类引用中,您可以使用实例方法来执行这些操作 -

  1. 如何比较两个NSDate变量?答: isEqualToDate:
  2. 如何找到两个NSDate变量之间的差异?答: timeIntervalSinceDate:
  3. 如何从NSDate变量获取分钟,小时和天的每个单独值?链接