Ios 使用NSDateComponents的日期之间的差异提供了错误的输出

Ios 使用NSDateComponents的日期之间的差异提供了错误的输出,ios,objective-c,nsdate,nsdatecomponents,Ios,Objective C,Nsdate,Nsdatecomponents,我试图得到两个日期之间的差异,它应该以天为单位显示 NSLog(@"%@", [NSDate date]); NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"dd/mm/yyyy"]; NSDate *formattedDate = [formatter dateFromString: [NSString stringWithFormat:@"31/05/2013"

我试图得到两个日期之间的差异,它应该以天为单位显示

NSLog(@"%@", [NSDate date]);

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/mm/yyyy"];

NSDate *formattedDate = [formatter dateFromString: [NSString stringWithFormat:@"31/05/2013"]];


NSDate *startDateForDays = [NSDate date];
NSDate *endDateForDays = formattedDate;

NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];

NSUInteger unitFlagsForDays = NSDayCalendarUnit;

NSDateComponents *componentsForDays = [gregorian components:unitFlagsForDays
                                                   fromDate:startDateForDays
                                                     toDate:endDateForDays options:0];

NSLog(@"%@", [NSString stringWithFormat:@"%i days until %@", [componentsForDays day], formattedDate]);
输出如下所示:

2013-05-29 20:21:51 +0000
118 days until 2013-01-30 23:05:00 +0000
我不知道我的代码中有什么错误,我希望你能帮助我。

试试这个------->


NSTimeInterval diff=[secondDate TimeIntervalsIncestDate:startDate]

我知道你已经解决了你的问题,只是指出你可以通过省略无符号整数来简化一点

NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
                                                fromDate:startDate
                                                  toDate:endDate
                                                 options:0];

这应该是一条评论而不是答案,但我不能评论,即使我应该能够评论。

可能与格式化分钟而不是月份有关。哇,非常感谢:)错误在于,正如Hot Clicks在我的第三行代码中指出的那样。“dd/mm/yyyy”是天/分钟/年我想要的是天/月/年。