Пересечение промежутка времени в C #

Допустим, у меня есть 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;
    }
8
задан Sonic Soul 27 July 2011 в 18:44
поделиться