Мне интересно, может ли кто-нибудь помочь мне, я просто учу 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();
}