两个时间段内的重叠部分
时间: 2023-12-05 20:05:27 浏览: 98
表单校验时间段重叠问题
假设有两个时间段,分别为 [start1, end1] 和 [start2, end2],可以使用以下代码计算它们的重叠部分:
```csharp
DateTime start = (start1 > start2) ? start1 : start2; // 取较大值作为重叠部分的起始时间
DateTime end = (end1 < end2) ? end1 : end2; // 取较小值作为重叠部分的结束时间
TimeSpan overlap = (end > start) ? end - start : TimeSpan.Zero; // 计算重叠部分的持续时间,如果没有重叠则为零
```
这样,start 和 end 就是重叠部分的起始时间和结束时间。如果需要将它们转换为字符串,可以使用以下代码:
```csharp
string startStr = start.ToString("yyyy-MM-dd");
string endStr = end.ToString("yyyy-MM-dd");
string overlapStr = overlap.TotalDays.ToString("0.##") + "天";
```
其中,ToString("yyyy-MM-dd") 用于将 DateTime 对象转换为格式为 "年-月-日" 的字符串,ToString("0.##") 用于将 double 类型的持续时间转换为格式为 "X.XX" 的字符串。如果重叠部分的持续时间为零,则 overlapStr 的值为 "0天"。
阅读全文