using System.Collections.Generic;
public DateTime start { get; set; }
public DateTime end { get; set; }
public static void Main()
var interval = new Interval() {
start = new DateTime(2020, 01, 01, 10, 04, 05),
end = new DateTime(2020, 01, 01, 14, 45, 38)
var coupures = new List<DateTime>();
coupures.Add(new DateTime(2020, 01, 01, 03, 00, 00));
coupures.Add(new DateTime(2020, 01, 01, 10, 30, 00));
coupures.Add(new DateTime(2020, 01, 01, 11, 00, 00));
coupures.Add(new DateTime(2020, 01, 01, 11, 30, 00));
coupures.Add(new DateTime(2020, 01, 01, 14, 00, 00));
coupures.Add(interval.start.AddSeconds(3600));
coupures = coupures.Where(c => c > interval.start && c < interval.end).ToList();
coupures = coupures.Prepend(interval.start).ToList();
coupures.Add(interval.end);
for (int i = 0; i < coupures.Count() - 1; i++) {
Console.WriteLine($"{coupures[i]} -> {coupures[i+1]}");