Учитывая список диапазонов дат, я хотел бы получить список смежных диапазонов дат.
Я не слишком уверен в терминологии того, что я ищу, но я собрал скелет:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace ContiguousTimeSpans
{
class Program
{
static void Main(string[] args)
{
List<DateRange> ranges = new List<DateRange>();
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 07:00:00"), DateTime.Parse("01/12/2015 10:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 06:00:00"), DateTime.Parse("01/12/2015 09:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 05:00:00"), DateTime.Parse("01/12/2015 08:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 18:00:00"), DateTime.Parse("01/12/2015 21:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 12:00:00"), DateTime.Parse("01/12/2015 14:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 20:00:00"), DateTime.Parse("01/12/2015 22:00:00")));
ranges.Add(new DateRange(DateTime.Parse("01/12/2015 11:00:00"), DateTime.Parse("01/12/2015 23:00:00")));
List<DateRange> contiguousBlocks = GetContiguousTimespans(ranges);
Debug.Assert(contiguousBlocks.Count == 2);
Debug.Assert(contiguousBlocks[0].Start.Hour == 5);
Debug.Assert(contiguousBlocks[0].End.Hour == 10);
Debug.Assert(contiguousBlocks[1].Start.Hour == 11);
Debug.Assert(contiguousBlocks[1].End.Hour == 23);
Console.ReadKey();
}
public static List<DateRange> GetContiguousTimespans(List<DateRange> ranges)
{
List<DateRange> result = new List<DateRange>();
//???
return result;
}
}
public class DateRange
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
public DateRange(DateTime start, DateTime end)
{
Start = start;
End = end;
}
}
}
Есть ли способ вывести смежные диапазоны?