首页 文章

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

提问于
浏览
53

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

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

5 回答

  • 18

    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);
    
  • 3

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

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

  • 7

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

    • 如何比较两个NSDate变量? Ans: isEqualToDate:

    • 如何找到两个NSDate变量之间的差异? Ans: timeIntervalSinceDate:

    • 如何从NSDate变量中获取分钟,小时和天的每个单独值? links

  • 151

    您可以使用 NSDatetimeIntervalSinceDate: 计算两个日期之间的时间间隔,但将时间间隔表示为日期没有任何意义 .

  • 4

    在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");
    

相关问题