Проверка наложения времени с предоставленными начальными и конечными временными интервалами в c# - PullRequest
0 голосов
/ 05 февраля 2020

Время перекрывается с C#: проверяется 2 набора комбинации начальной и конечной даты для проверки на круге?

  • "6:00 утра" до "4:30 вечера"
  • С 8:29 до 16:30

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вы создаете собственный класс для получения информации о временных периодах, например:

public class TimePeriod
{
  public DateTime Start { get; set; }
  public DateTime End { get; set; }

  public TimePeriod(DateTime start, DateTime end)
  {
    if( start > end)
      throw new InvalidArgumentException();
    Start = start;
    End = end;
  }

  public bool Overlaps(TimePeriod tp)
  {
    // it's enough for one's period start or end to fall between the other's start and end to overlap
    if ((Start > tp.Start && Start < tp.End ) ||
        (End > tp.Start && End < tp.End) ||
        (tp.Start > Start && tp.Start < End) ||
        (tp.End > Start && tp.End < End) )
      return true;
    else
      return false;
  }
}

Тогда использование становится чрезвычайно простым:

TimePeriod tp1 = new TimePeriod(dt1, dt2);
TimePeriod tp2 = new TimePeriod(dt3, dt4);

var overlaps = tp1.Overlaps(tp2);
0 голосов
/ 05 февраля 2020
private static bool CheckOverlap(TimeSpan startDate1, TimeSpan endDate1, TimeSpan startDate2, TimeSpan endDate2)
        {

            //TODO: Make sure startDate is lower than EndDate
              if (startDate2 < endDate1 && endDate2 > startDate1)
                return true;
            return false;
        }
...