我有一份工作项目清单。每个工作项都有一个开始和结束时间。
所以,基本上它看起来像这样:
List<Work> works = new List<Work>();
works.Add(new Work(
new DateTime(2013, 4, 30, 9, 0, 0),
new DateTime(2013, 4, 30, 11, 0, 0));
现在我想得到工作的总时间。同样,基本上这很容易:
09:00-11:00 => 2 hours
13:00-17:00 => 4 hours
----
06:00 hours
这只是总和。
但是现在变得困难了:如果我想提取并行时间,我该如何计算这个总和?
例如,
09:00-11:00 => 2 hours
10:00-11:30 => 1.5 hours
13:00-17:00 => 4 hours
----
06:30 hours
是 6.5 小时,但总和是 7.5 小时。两个工作项映射到 10 点到 11 点之间的时间这一事实有所不同。
对于可以以基本上所有可能的方式(周围、开始重叠、结束重叠,包括)相互重叠的任意数量的工作项,我该如何解决这个问题?