1

我试图获取今天[NSDate date]和用户从 UIDatePicker, d中选择的日期之间的天数差异,它将作为整数返回。

这是我用来找出差异的方法:

NSDate *startDate = d;
NSDate *endDate =  [NSDate date];
NSLog(@"startDate: %@",startDate);
NSLog(@"endDate: %@",endDate);

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSDateComponents *components = [gregorian components:NSDayCalendarUnit
                                            fromDate:endDate
                                              toDate:startDate
                                             options:0];
NSInteger days = [components day];

NSLog(@"Days: %i",days);

startDateendDate都正确返回,但我得到的问题是我得到的天差是错误的。比如我选择今天的日期,差为0,我选择明天,差还是0,我选择后天,差只有1,什么时候应该是2。

有人对我能做些什么来解决这个问题有任何想法吗?这让我发疯了,我不知道这是怎么回事。

4

2 回答 2

1
  • 比如我选择今天的日期,差为0,我选择明天,差还是0,我选择后天,差只有1,什么时候应该是2。

假设明天选择的日期是 05:00 pm,而今天的当前日期是 08:00 PM。然后,如果尝试根据天数获取日期之间的差异,那么它应该为零。因为上述日期之间的差异是 2 小时不到一整天。我希望这能解决你的问题。始终将要比较的两个日期的组成部分设置为相同。为此目的使用 NSDateComponent。

于 2012-07-19T06:09:02.493 回答
0

通常与此类问题有关,它与导致此确切问题的不同日期格式有关。

检查这个问题作为参考:find total number of days between two dates in iphone

或者

目标 C - 计算两个日期之间的天数

于 2012-07-19T05:00:34.027 回答