c = self->startDate;
d = self->endDate;
}
+ // [a;b[ ?< [c;d[
if ([b compare:c] == NSOrderedAscending)
return nil; // no intersection
- if ([b compare:d] == NSOrderedAscending)
- return [NGCalendarDateRange calendarDateRangeWithStartDate:c endDate:b];
-
+ // b ?< d
+ if ([b compare:d] == NSOrderedAscending) {
+ // c !< b && b !< d -> [c;b[
+ if([c compare:b] == NSOrderedSame)
+ return nil; // no real range, thus return nil!
+ else
+ return [NGCalendarDateRange calendarDateRangeWithStartDate:c endDate:b];
+ }
+ if([c compare:d] == NSOrderedSame)
+ return nil; // no real range, thus return nil!
+ // b !> d -> [c;d[
return [NGCalendarDateRange calendarDateRangeWithStartDate:c endDate:d];
}
}
- (BOOL)containsDate:(NSCalendarDate *)date {
- if([self->endDate isEqualToDate:date])
- return NO;
return ([self->startDate earlierDate:date] == self->startDate &&
- [self->endDate laterDate:date] == self->endDate) ? YES : NO;
+ [self->endDate compare:date] == NSOrderedDescending) ? YES : NO;
}
/* comparison */