/// <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;
}