Допустим, у меня есть 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, но диапазоны могут перемещаться в любом направлении (или не пересекаться вообще, в этом случае я бы хотел, чтобы результирующий промежуток времени был нулевым)
в конце мне нужны календарные даты начала / конца результирующего промежутка времени пересечения (а не только тики / часы / дни и т. д.)
есть ли элегантный способ сделать это в C # 3.0?
ОБНОВЛЕНИЕ
Я взял код 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;
}