using System.Collections;
using System.Collections.Generic;
public static void Main()
var hours = new int[] {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
var testResults = GetTimeBuckets(new TimeSpan(8, 0, 0), new TimeSpan(20, 0, 0), hours);
foreach(var result in testResults)
Console.WriteLine(String.Format("Hour: {0} InBucket: {1}",result.Item1.ToString(), result.Item2.ToString()));
public static IEnumerable<Tuple<TimeSpan, bool>> GetTimeBuckets(TimeSpan startHour, TimeSpan endHour, IEnumerable<int> hours)
var result = new List<Tuple<TimeSpan, bool>>();
foreach(var hour in hours)
var hourSpan = new TimeSpan(hour, 0, 0);
if(startHour < endHour && (hourSpan >= startHour && hourSpan < endHour)
|| startHour > endHour && (hourSpan < endHour || hourSpan >= startHour)
result.Add(new Tuple<TimeSpan, bool>(hourSpan, true));
result.Add(new Tuple<TimeSpan, bool>(hourSpan, false));