我有一个工作项目清单。每个工作项目都有一个开始和结束时间。从列表中获取休息时间
所以,基本上它看起来像这样:
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点之间的事实造成了不同。
我该如何解决这个问题,可以基本上以任何可能的方式相互重叠的任意数量的工作项目(周边,开始重叠,结束重叠,包括)?
是否有设定的时间间隔(例如最小0.5小时)?如果是这样,一个简单的方法是检查每个半小时的插槽周围的工作项目,并将其全部添加。 – 2013-04-30 09:13:55
不幸的是,时间完全是任意的,可能从几秒到几天不等。 – 2013-04-30 09:20:41
我现在用这个库解决了它:简单,直接,而且正常工作:-) – 2013-04-30 10:54:48