c# 获取两个时间段的重复部分

        /// <summary>
        /// 获取两个时间段的重复部分
        /// </summary>
        /// <param name="startTime1">时间段1 开始</param>
        /// <param name="endTime1">时间段1 结束</param>
        /// <param name="startTime2">时间段2 开始</param>
        /// <param name="endTime2">时间段2 结束</param>
        public TimeSpan GetDataOverid(DateTime startTime1, DateTime endTime1, DateTime startTime2, DateTime endTime2)
        {

            TimeSpan RtnTs = new TimeSpan();
            ///重叠部分开始
            DateTime OverlapBegin;
            //重叠部分结束
            DateTime OverlapEnd;

            try
            {

                //情况一
                //       |-----------startTime1-----endTime1-----------|
                //          |--------startTime2-----endTime2-------|
                if (startTime1 <= startTime2 && endTime1 >= endTime2)
                {
                    OverlapBegin = startTime2;
                    OverlapEnd = endTime2;
                    RtnTs = endTime2 - startTime2;
                }

                //情况二
                //    |--------------startTime2-----endTime2----------------|
                //       |-----------startTime1-----endTime1-----------|
                else if (startTime1 >= startTime2 && endTime1 <= endTime2)
                {
                    OverlapBegin = startTime1;
                    OverlapEnd = endTime1;
                    RtnTs = endTime1 - startTime1;

                }

                //情况三
                //    |--------------startTime2-----endTime2----------------|
                //       |-----------startTime1-----endTime1----------------------|
                else if ((startTime2 <= startTime1 && startTime1 <= endTime2) && endTime1 >= endTime2)
                {
                    OverlapBegin = startTime1;
                    OverlapEnd = endTime2;
                    RtnTs = endTime2 - startTime1;
                }
                //情况四
                //    |--------------startTime1-----endTime1----------------|
                //       |-----------startTime2-----endTime2----------------------|
                else if ((startTime1 <= startTime2 && startTime2 <= endTime1) && endTime2 >= endTime1)
                {
                    OverlapBegin = startTime2;
                    OverlapEnd = endTime1;
                    RtnTs = endTime1 - startTime2;
                }


            }
            catch (Exception)
            {

                throw;
            }

            return RtnTs;
        }

  

猜你喜欢

转载自www.cnblogs.com/lhlong/p/11712469.html