我有一组称为 setTimes
的时间间隔,如下所示:
[a,d] [h,j] [k,l]
另一组时间 rawTimes
如下所示:
[a,c] [b,e] [e,g] [f,i] [k,l] [i,m]
rawTimes
需要转换为新的时间间隔,这些时间间隔位于 setTimes
指定的时间间隔内。所以结果集是:
[a,c] [b,d] [h,i] [k,l] [i,j] [k,l]
(其中 a < b < c ... < m)
基本上,结果集应该全部包含在 setTimes
集中的一个区间内。 rawTimes
中的一个间隔可能会被分成多个部分,或者它甚至永远不会进入最终集合。
目前我所做的是将 setTimes
间隔中的每个开始时间添加到名为 startTimes
的列表中,并将结束时间添加到 endTimes
中。所以:
startTimes = a , h , k
endTimes = d , j , l
但我被困在那里。我不确定从那里去哪里。
最佳答案
您可以使用 Allen's interval algebra 优雅地完成此操作
关于c# - 如何根据起始集将一组时间间隔转换为另一组时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871617/