c#中的Timespan交叉点

Son*_*oul 8 .net c# timespan

假设我有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)
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,交叉点将是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;
    }
Run Code Online (Sandbox Code Playgroud)

Str*_*ior 12

也许是这样的事情?

var range1 = new{start = DateTime.Parse("2/1/2011"), end = DateTime.Parse("8/1/2011")};
var range2 = new{start = DateTime.Parse("5/2/2011"), end = DateTime.Parse("5/28/2011")};
var iStart = range1.start < range2.start ? range2.start : range1.start;
var iEnd = range1.end < range2.end ? range1.end : range2.end;
var newRange = iStart < iEnd ? new{start = iStart, end = iEnd} : null;
Run Code Online (Sandbox Code Playgroud)

null如果没有相交的时间段,则应该返回.