首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找时间范围中的重叠

问查找时间范围中的重叠
EN

Stack Overflow用户
提问于 2010-12-07 23:01:01
回答 2查看 840关注 0票数 1

给定多个时间范围,我需要找出当前时间属于哪个时间范围。我如何才能更有效地忽略DateTime的日期部分。

TimeSlot.Overlaps(DateTime currTime)方法应该忽略日期部分,而只匹配其中的时间部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-08 13:44:36

代码语言:javascript
复制
public class TimeSlot
{
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }


    public bool Overlaps(DateTime compareTime)
    {
        return Overlaps(new TimeSlot() { StartTime = compareTime, EndTime = compareTime });
    }

    public bool Overlaps(TimeSlot compareSlot)
    {
        return (
            (compareSlot.StartTime.TimeOfDay >= StartTime.TimeOfDay && compareSlot.StartTime.TimeOfDay < EndTime.TimeOfDay) ||
            (compareSlot.EndTime.TimeOfDay <= EndTime.TimeOfDay && compareSlot.EndTime.TimeOfDay > StartTime.TimeOfDay) ||
            (compareSlot.StartTime.TimeOfDay <= StartTime.TimeOfDay && compareSlot.EndTime.TimeOfDay >= EndTime.TimeOfDay)
        );
    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-12-07 23:08:56

我会在.Net中使用datediff方法。您可以指定要将日期的哪个部分用作间隔。因此,首先您可能想要测试它们是否在同一天内。指定day作为时间间隔。结果应该是零。然后你可以找到小时,分钟,秒,等等。我很确定它给了你小数部分:1小时45分钟与1.75小时105分钟。然后,只需比较TimeSlot类中的开始和结束日期时间(我猜这是自定义的?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4378056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档