Я пытаюсь создать функцию, которая сообщит мне, перекрываются ли 2 временных диапазона.Все существующие решения, которые я нашел до сих пор, направлены на обнаружение перекрытия, но в один и тот же день, что не очень хорошо для меня.
Я думал, что что-то подобное будет работать, но оно не справляется со всеми сценариями:
var current = new Day()
{
Start = TimeSpan.Parse("23:00"),
End = TimeSpan.Parse("02:00")
};
var next = new Day()
{
Start = TimeSpan.Parse("22:45"),
End = TimeSpan.Parse("23:30")
};
current.End = (current.Start > current.End) ?
current.End.Add(new TimeSpan(24, 0, 0)) :
current.End;
next.End = (next.Start > next.End) ?
next.End.Add(new TimeSpan(24, 0, 0)) :
next.End;
bool overlap = (current.Start < next.End && next.Start < current.End);
Debug.WriteLine(overlap);
Предоставленный сценарий работает должным образом, но если я попробую следующее, он не будет работать:
var current = new Day()
{
Start = TimeSpan.Parse("23:00"),
End = TimeSpan.Parse("02:00")
};
var next = new Day()
{
Start = TimeSpan.Parse("01:00"),
End = TimeSpan.Parse("04:00")
};
Любые предложения о том, что я могу использовать для обработки всех сценариев.Он должен обрабатывать перекрытия, но он также должен учитывать, что в любое время, когда конечное время меньше начального, он будет считать, что оно закончилось на следующий день, и расчет перекрытия должен учитывать это.
Спасибо.