временные интервалы перекрываются, но в течение следующего дня - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать функцию, которая сообщит мне, перекрываются ли 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")
};

Любые предложения о том, что я могу использовать для обработки всех сценариев.Он должен обрабатывать перекрытия, но он также должен учитывать, что в любое время, когда конечное время меньше начального, он будет считать, что оно закончилось на следующий день, и расчет перекрытия должен учитывать это.

Спасибо.

...