/// <summary> /// 合并时段。如果有相交的时段,则合并。 /// </summary> /// <param name="spans">时段集合</param> /// <returns></returns> public static List <BufferedTimePeriod> Merge(List <BufferedTimePeriod> spans) { List <BufferedTimePeriod> outs = new List <BufferedTimePeriod>(); spans.Sort(); BufferedTimePeriod last = null; foreach (var item in spans) { if (last == null) { last = item; continue; } if (last.BufferedContains(item.Start)) { last = BufferedTimePeriod.Merge(last, item); } else { outs.Add(last); last = null; } } if (last != null) { outs.Add(last); } return(outs); }