【问题标题】:Get the Common time between 2 DateTimes [duplicate]获取2个日期时间之间的公共时间[重复]
【发布时间】:2018-12-13 21:54:05
【问题描述】:

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

但我试图获取 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 到上午 10:00 时间的建议。

【问题讨论】:

  • 所以为了确认我的理解 - 你想在两个时间段之间找到overlap。如果这是正确的,您应该相应地调整您的问题以避免混淆并帮助您更快地获得答案。
  • 你的意思是:我想得到两个会议对象的日期相互冲突的时间?
  • 这是标记为重复的更好链接:stackoverflow.com/questions/13513932/…
  • @Svenmarim 不,这没有给出日期范围。
  • truee..truee..

标签: c# datetime


【解决方案1】:

我可能误解了您的问题,但您似乎想要获得重叠的时间间隔。我认为这样的事情应该可行:

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));

【讨论】:

  • 要拒绝不重叠的范围,您可以添加额外的检查:if (overlapStart &lt; overlapEnd) ... - 或检查 overlappedTimeSpan 是否为负。
  • 仍在努力……请耐心等待。
  • @MatthewWatson -- 我认为这可以解决问题。
  • @rory.ap 我可以得到分钟的差异。如何获得上午 9:45 到上午 10:00 的通用/唯一时间。
  • 我的回答是这样。 overlapStart 以上是上午 9:45,overlapEnd 是上午 10:00。
猜你喜欢
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 2013-09-08
  • 2019-06-22
  • 2012-03-24
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多