日期之间的奇怪结果

时间:2015-07-07 09:59:04

标签: objective-c

这可能是愚蠢但我无法找到它发生的原因,我试图计算两个日期之间的差异:

- (long)daysBetween:(NSDate *)dt1 and:(NSDate *)dt2
{
    NSUInteger unitFlags = NSCalendarUnitDay;
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *components = [calendar components:unitFlags fromDate:dt1 toDate:dt2 options:0];
    return [components day]+1;
}

用它来表示:

NSLog(@"%@ %@,%ld",currentdate,starteddate,[self daysBetween:starteddate and:currentdate]);
return [self daysBetween:starteddate and:currentdate];

在日志上,对于相同的日期,有时它有时会返回7,为什么?

记录2个不同的电话:

  2015-07-07 09:54:33 +0000 2015-06-30 09:54:33 +0000,7
  2015-07-07 09:54:33 +0000 2015-06-30 09:54:33 +0000,8

对于完全相同的4个日期,我得到不同的结果,如你所见 - 7和8 ...

1 个答案:

答案 0 :(得分:2)

我曾遇到过同样的问题。在设置时区时解决了 -

在将日期传递给此函数之前设置时区

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];