【发布时间】:2011-07-26 23:06:17
【问题描述】:
假设我有 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 中是否有一种优雅的方法可以做到这一点?
更新
我使用了 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;
}
【问题讨论】:
-
您需要知道范围的开始日期/结束日期,还是只知道它的长度?