找到两个日期之间的差异总是打印10

时间:2016-07-01 06:03:15

标签: ios objective-c

以下是获取当前日期的代码。

-(NSString *) getCurrentDate {
    NSDateFormatter *dateformater = [[NSDateFormatter alloc]init];
    [dateformater setDateFormat:@"dd-MMM-yyyy"];
    NSString *today=[dateformater stringFromDate:[NSDate date]];
    return today;
}

我使用以下代码查找当前日期与从pickerview中选择的日期之间的差异

  NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
  [dateFormat setDateFormat:@"dd-MMM-yyyy"];
  NSString *date = [dateFormat stringFromDate:picker.date];
  NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:GregorianCalendar];
  NSCalendarUnit unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay;
  NSDateFormatter *f = [[NSDateFormatter alloc] init];
  [f setDateFormat:@"dd-MMM-yyyy"];
  NSDate *selectedDate = [f dateFromString:date];
  NSDate *currentDate = [f dateFromString:[self getCurrentDate]];
  NSDateComponents *currentDateComponent = [gregorianCalendar components:unitFlags fromDate:currentDate toDate:selectedDate options:0];

currentDateComponent.day始终打印值10。

我的代码有什么问题?我怎样才能找到两个日期之间的差异?

1 个答案:

答案 0 :(得分:2)

我认为你使用的组件应该是错的,但只有NSCalendarUnitDay 我的代码正在给我正确的差异(差异.day)。

 NSCalendar *calendar = [NSCalendar currentCalendar];
 NSDateComponents *difference = [calendar components:NSCalendarUnitDay
                                                           fromDate:[NSDate date] toDate:enDate options:0];