zoukankan      html  css  js  c++  java
  • 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;
            }
    

      

  • 相关阅读:
    .NET Core SignalR 和 .NET SignalR 区别
    MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded
    Geohash 基本知识及 .NET 下计算相邻8个区域编码
    ASP.NET 下配置请求大小、请求时间等参数
    .NET Core、EF、Dapper、MySQL 多种方式实现数据库操作(动态注册实体类)
    .NET Core 开发常用命令(VS Code)
    ping
    exec与xargs区别
    doc转docx
    读取docx表格中的信息
  • 原文地址:https://www.cnblogs.com/lhlong/p/11712469.html
Copyright © 2011-2022 走看看