Найдите пробелы в списке DateTime все в тот же день, но в разное время - PullRequest
0 голосов
/ 26 февраля 2020

Мне интересно, может ли кто-нибудь помочь мне, я просто учу c# и пытаюсь найти все пробелы (прошедшее время, которое не занято в списке, или свободное время для этого дня) в списке начала. и время окончания даты для того же дня, но в разное время. Я могу получить первое и последнее, но не промежутки в середине. Любая помощь будет принята с благодарностью.

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

        public static List<DatetimeRange> GetDateTimeGaps(List<DatetimeRange> datetimeRange, DateTime day)
        {
            var Result = new List<DatetimeRange>();

            var HighestValueOfDay = new DateTime(day.Year, day.Month, day.Day, 23, 59, 59);
            var LowestValueOfDay = new DateTime(day.Year, day.Month, day.Day, 00, 00, 00);

            var FirstStart = datetimeRange.Min(x => x.Start);
            var LastEnd = datetimeRange.Max(x => x.End);

            if (LowestValueOfDay < FirstStart)
                Result.Add(new DatetimeRange { Start = LowestValueOfDay, End = FirstStart });

            if (HighestValueOfDay > LastEnd)
                Result.Add(new DatetimeRange { Start = LastEnd, End = HighestValueOfDay });

            return Result;
        }

        static void Main()
        {
            var Datetimes = new List<DatetimeRange>
            {
                new DatetimeRange { Start = new DateTime(2020, 2, 26, 12, 00, 0), End = new DateTime(2020, 2, 26, 15, 30, 0)},
                new DatetimeRange { Start = new DateTime(2020, 2, 26, 8, 30, 0), End = new DateTime(2020, 2, 26, 10, 30, 0)}
            };

            var Result = GetDateTimeGaps(Datetimes, new DateTime(2020, 2, 26, 0, 0, 0));

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