Проверка на совпадение между DateTime + TimeSpan - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть Appointment объекты, сделанные следующим образом:

public Appointment(string p_Title, DateTime p_Start, TimeSpan p_Lenght)

Я хочу проверить, перекрываются ли объекты, но независимо от того, что я пытаюсь, мне кажется, что перекрытия в каждом объекте, которые указывают на один и тот же день.Я отформатировал DateTime в ГГГГ, ММ, ДД, ЧЧ: ММ: СС.Время: ЧЧ: ММ: СС

1 Ответ

0 голосов
/ 09 декабря 2018

У меня есть Appointment объекты, сделанные следующим образом:
public Appointment(string p_Title, DateTime p_Start, TimeSpan p_Lenght)

Таким образом, у каждой встречи есть начало, равное DateTime, и длина, которая являетсяTimeSpan.
Из этих двух параметров вы можете легко рассчитать окончание встречи, добавив значение p_Length к значению p_Start, используя Add метод DateTime, например:

var end = p_Start.Add(p_Length);

После того, как вы рассчитали это, у вас есть два значения DateTime для каждой встречи, так что легко рассчитать, если две встречи перекрываются - вы просто проверяете, начинается ли одно из них перед другим.заканчивается, в то время как другой начинается до того, как закончится один (обратите внимание, что это правильно, независимо от типа тестируемых данных, см. информация тега перекрытия для деталей) - как это:

bool AreOverlapping(Appointment a, Appointment b)
{
    return a.Start < b.Start.Add(b.Length) &&
           b.Start < a.Start.Add(a.Length)
}

Если вы считаете встречу, заканчивающуюся в 13:00, перекрытием другой встречи, начинающейся в 13:00, просто измените < на <=.

Я отформатировал DateTime в ГГГГ, ММ, ДД, ЧЧ: ММ: СС.Время: ЧЧ: ММ: СС

Ни DateTime, ни TimeSpan сохраненных формат отображения .Только строковые их представления - и для проверки перекрывающихся встреч вам не нужно заботиться о том, как эти данные представляются в виде строки, - вы просто заботитесь о самих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...