我需要检测有多少天有共同的2个日期间隔.为此,我在C#中使用了Itenso.TimePeriod
Nuget.但给出以下场景,我得到的结果是错误的:
var start1 = new DateTime(2023, 7, 11);
var end1 = new DateTime(2023, 7, 15);
var start2 = new DateTime(2023, 7, 14);
var end2 = new DateTime(2023, 8, 1);
var periods = new TimePeriodCollection
{
new TimeRange(start1, end1),
new TimeRange(start2, end2),
};
var periodIntersector = new TimePeriodIntersector<TimeRange>();
var intersectedPeriods = periodIntersector.IntersectPeriods(periods);
Console.WriteLine($"intersected days: {intersectedPeriods.Duration.Days}");
但是由于两个间隔都是第14天和第15天,我预计结果是2,但控制台打印如下:
intersected days: 1
我做错什么了吗?
稍后编辑:即使使用此代码,我也会得到错误的结果:
var start1 = new DateTime(2023, 7, 11);
var end1 = new DateTime(2023, 7, 15)+ TimeSpan.FromSeconds(1);
var start2 = new DateTime(2023, 7, 14);
var end2 = new DateTime(2023, 8, 1);
var t1 = new TimeRange(start1, end1, true);
var t2 = new TimeRange(start2, end2, true);
var timeInterval1 = new TimeInterval(start1, end1);
timeInterval1.EndEdge = IntervalEdge.Open;
timeInterval1.StartEdge = IntervalEdge.Open;
var timeInterval2 = new TimeInterval(start2, end2);
timeInterval2.EndEdge = IntervalEdge.Open;
timeInterval2.StartEdge = IntervalEdge.Open;
var periods = new TimePeriodCollection
{
t1,t2
};
var periodIntersector = new TimePeriodIntersector<TimeRange>();
var intersectedPeriods = periodIntersector.IntersectPeriods(periods);
Console.WriteLine($"intersected days: {intersectedPeriods.Duration.Days}");
Console.WriteLine($"intersected days: {t1.GetIntersection(t2).Duration.Days}");
输出:
intersected days: 1
intersected days: 1