c# 从多个时间段中获取重复部分时间
时间: 2023-12-16 17:05:50 浏览: 126
C#获取时间
您好,如果您想要从多个时间段中获取重复部分时间,可以按照以下步骤进行操作:
1. 将多个时间段按照开始时间从早到晚排序。
2. 从第一个时间段的开始时间开始,依次比较后续时间段的开始时间和结束时间。
3. 如果后续时间段的开始时间小于等于当前时间段的结束时间,说明存在重复部分时间,将当前时间段的结束时间更新为后续时间段的结束时间。
4. 如果后续时间段的开始时间大于当前时间段的结束时间,说明不存在重复部分时间,将当前时间段的开始时间设为后续时间段的开始时间。
5. 重复执行步骤3和步骤4,直到比较完所有时间段。
6. 最后得到的时间段即为所有时间段的重复部分时间。
下面是一个示例代码,假设有一个类 TimePeriod 表示一个时间段:
```csharp
public class TimePeriod
{
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
```
则可以按照以下方式实现获取重复部分时间的方法:
```csharp
public static TimePeriod GetOverlapTime(IEnumerable<TimePeriod> periods)
{
var sortedPeriods = periods.OrderBy(p => p.StartTime).ToList();
var overlapPeriod = sortedPeriods.First();
foreach (var period in sortedPeriods.Skip(1))
{
if (period.StartTime <= overlapPeriod.EndTime)
{
overlapPeriod.EndTime = period.EndTime > overlapPeriod.EndTime ? period.EndTime : overlapPeriod.EndTime;
}
else
{
overlapPeriod.StartTime = period.StartTime;
overlapPeriod.EndTime = period.EndTime;
}
}
return overlapPeriod;
}
```
这个方法接受一个 TimePeriod 对象的集合,返回所有时间段的重复部分时间。
阅读全文