的時間段庫.NEThttp://www.codeproject.com/KB/datetime/TimePeriod.aspx包括TimePeriodIntersector搜索重疊的時間段。
通過對時間線上的所有時刻進行計數/排序,使用線性快速算法計算重疊。
而且TimePeriodIntersector的用法是這樣的:
// ----------------------------------------------------------------------
public void TimePeriodCombinerSample()
{
TimePeriodCollection periods = new TimePeriodCollection();
periods.Add(new TimeRange(new DateTime(2011, 3, 01), new DateTime(2011, 3, 10)));
periods.Add(new TimeRange(new DateTime(2011, 3, 04), new DateTime(2011, 3, 08)));
periods.Add(new TimeRange(new DateTime(2011, 3, 15), new DateTime(2011, 3, 18)));
periods.Add(new TimeRange(new DateTime(2011, 3, 18), new DateTime(2011, 3, 22)));
periods.Add(new TimeRange(new DateTime(2011, 3, 20), new DateTime(2011, 3, 24)));
periods.Add(new TimeRange(new DateTime(2011, 3, 26), new DateTime(2011, 3, 30)));
TimePeriodCombiner<TimeRange> periodCombiner = new TimePeriodCombiner<TimeRange>();
ITimePeriodCollection combinedPeriods = periodCombiner.CombinePeriods(periods);
foreach (ITimePeriod combinedPeriod in combinedPeriods)
{
Console.WriteLine("Combined Period: " + combinedPeriod);
}
// > Combined Period: 01.03.2011 - 10.03.2011 | 9.00:00
// > Combined Period: 15.03.2011 - 24.03.2011 | 9.00:00
// > Combined Period: 26.03.2011 - 30.03.2011 | 4.00:00
} // TimePeriodCombinerSample
我不認爲我得到它。如果event1與event2重疊且event2與event3重疊,它們是否應該全部進入相同的子列表中,即使event1可能不與event3重疊? – Jan 2011-03-06 14:48:05
不可以。我們的目標是讓列表形成,使任何人都無法參加任何給定列表中的兩個事件。如果event1與event2和event3重疊,但event2和event3不重疊,則可以同時參加event2和event3。我將根據這些清單安排其他活動,如果涉及的兩個每週活動也重疊,則新活動的時間只能重疊(從而防止任何人同時參與)。 謝謝你的時間! – 2011-03-06 16:50:20