给定多个时间范围,我需要找出当前时间属于哪个时间范围。我如何才能更有效地忽略DateTime的日期部分。
TimeSlot.Overlaps(DateTime currTime)方法应该忽略日期部分,而只匹配其中的时间部分。
发布于 2010-12-08 13:44:36
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)
);
}
}发布于 2010-12-07 23:08:56
我会在.Net中使用datediff方法。您可以指定要将日期的哪个部分用作间隔。因此,首先您可能想要测试它们是否在同一天内。指定day作为时间间隔。结果应该是零。然后你可以找到小时,分钟,秒,等等。我很确定它给了你小数部分:1小时45分钟与1.75小时105分钟。然后,只需比较TimeSlot类中的开始和结束日期时间(我猜这是自定义的?)
https://stackoverflow.com/questions/4378056
复制相似问题