Допустим, у меня есть 2 диапазона дат.
Эти диапазоны дат могут быть представлены как промежутки времени.
Я хочу найти диапазон дат, который попадает в два интервала времени.
Range 1: 2/1/2011 - 8/1/2011 (timespan of 6 months)
Range 2: 5/2/2011 - 5/28/2011 (timespan of 26 days)
поэтому в этом случае пересечение будет 5/2 / 2011-5 / 28/2011, но диапазоны могут двигаться в любом направлении (или вообще не пересекаться, и в этом случае я бы хотел, чтобы результирующий промежуток времени составил быть длиной 0)
в конце мне нужны календарные даты начала / конца результирующего промежутка времени пересечения (не только тики / часы / дни и т. Д.)
Есть ли элегантный способ сделать это в c # 3.0?
UPDATE
Я взял код StriplingWarriors и создал из него метод ..
private static DateRange GetIntersectionRange(DateRange range1, DateRange range2) {
var iRange = new DateRange();
iRange.From = range1.From < range2.From ? range2.From : range1.From;
iRange.To = range1.To < range2.To ? range1.To : range2.To;
if (iRange.From > iRange.To) iRange = null;
return iRange;
}