找出两个日期之间是否有两个日历日

时间:2014-04-07 08:58:05

标签: ios iphone objective-c nsdate nscalendar

我想知道两个日期之间是否有两个日历日。

我尝试使用

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit fromDate:date toDate:now options:0];
NSInteger days = [components day];  

并检查天数> = 2,但似乎仅在整天过去时计算天数。

例如,如果两个日期是:
星期一上午01:00 周日晚上11点

结果为0,
我期待得到1,因为星期天与星期一不同。

1 个答案:

答案 0 :(得分:1)

您必须将两个日期“标准化”到相应日期的开始

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *startOfToday, *startOfOtherDay;
[cal rangeOfUnit:NSDayCalendarUnit startDate:&startOfToday interval:NULL forDate:now];
[cal rangeOfUnit:NSDayCalendarUnit startDate:&startOfOtherDay interval:NULL forDate:date];

然后计算差异:

NSDateComponents *components = [cal components:NSDayCalendarUnit fromDate:startOfOtherDay toDate:startOfToday options:0];
NSInteger days = [components day];