C#获取多个时间段的并集

C#获取多个时间段的并集

        /// <summary>
        /// 获取时间段并集
        /// </summary>
        /// <param name="list">传入的时间(开始时间正序)</param>
        /// <returns></returns>
        private List<Time> GetListTime(List<Time> list)
        {
            for (int i = 0; i < list.Count; i++)
            {
                var dataI = list[i];
                for (int j = i + 1; j < list.Count; j++)
                {
                    var dataJ = list[j];
                    if (dataI.eTime.CompareTo(dataJ.bTime) >= 0 && dataI.eTime.CompareTo(dataJ.bTime) <= 0)
                    {
                        dataI.eTime = dataJ.eTime;
                        list.Remove(dataJ);
                        j--;
                    }
                    else if (dataI.eTime.CompareTo(dataJ.eTime) >= 0)
                    {
                        list.Remove(dataJ);
                        j--;
                    }
                    else
                    {
                        break;
                    }
                    i = j;
                }
            }
            return list;
        }
    public class Time
    {
        public DateTime bTime { get; set; }
        public DateTime eTime { get; set; }
    }
chenj

评论已关闭。