获取2个DateTimes之间的公共时间

时间:2018-12-13 12:52:58

标签: c# datetime

我可以得到2个DateTime之间的小时/分钟/秒差异

但是我试图在2个日期时间之间获得 common 时间,但不是。

示例:

public class Meeting
{
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}

我在这里添加了时间。

 var list = new List<Meeting>();
        list.Add(
            new Meeting 
            { 
                Start = DateTime.Parse("12/13/2018 09:00 AM"), 
                End = DateTime.Parse("12/13/2018 10:00 AM")
            }
        );
        list.Add(
            new Meeting 
            { 
                Start = DateTime.Parse("12/13/2018 09:45 AM"), 
                End = DateTime.Parse("12/13/2018 10:30 AM") 
            }
        );

因此,在这里,我尝试获取2个列表之间的公用时间。

常见时间为 15 分钟,时间为 9:45 AM至10:00 AM

因此,任何建议将时间从 9:45 AM设置为10:00 AM

1 个答案:

答案 0 :(得分:2)

我可能会误解您的问题,但似乎您想获取重叠的时间间隔。我认为类似这样的方法应该起作用:

DateTime s1 = DateTime.Parse("12/13/2018 09:00 AM");
DateTime e1 = DateTime.Parse("12/13/2018 10:00 AM");
DateTime s2 = DateTime.Parse("12/13/2018 09:45 AM");
DateTime e2 = DateTime.Parse("12/13/2018 10:30 AM");

DateTime overlapStart = (s1 > s2 ? s1 : s2);
DateTime overlapEnd = (e1 < e2 ? e1 : e2);

TimeSpan overlappedTimeSpan 
    = (overlapStart < overlapEnd ? overlapEnd - overlapStart : TimeSpan.FromTicks(0));