DateRange.intersectionOf constructor
Returns the intersection of DateRanges a
and b
.
If a
does not overlap with b
, this factory returns null
. Note
that this is distinct from a DateRange with start == end == null
,
which represents a DateRange that is unbounded in both directions.
Implementation
factory DateRange.intersectionOf(DateRange a, DateRange b) {
final start = _laterStartDateOf(a.start, b.start);
final end = _earlierEndDateOf(a.end, b.end);
// Note that we don't use >= here, as [DateRange]s are inclusive;
// `start == end` is a valid condition for a date range.
if (start != null && end != null && start > end) {
// TODO: Need to refactor this logic
return DateRange(null, null);
}
return DateRange(start, end);
}