Skip to content

Instantly share code, notes, and snippets.

@EdGuiness
Last active August 29, 2015 13:57
Show Gist options
  • Select an option

  • Save EdGuiness/9788644 to your computer and use it in GitHub Desktop.

Select an option

Save EdGuiness/9788644 to your computer and use it in GitHub Desktop.
Compare two date ranges to see if they overlap. This is the source code for a Youtube video to be published at http://www.youtube.com/user/CodingForTheWin
using System;
namespace Power
{
class Program
{
static void Main(string[] args)
{
var a = new DateRange { Start = new DateTime(2014, 01, 10), End = new DateTime(2014, 01, 20) };
var b = new DateRange[] {
new DateRange {Start = new DateTime(2014, 01, 01), End = new DateTime(2014, 01, 02) } // 1
,new DateRange {Start = new DateTime(2014, 01, 05), End = new DateTime(2014, 01, 15) } // 2
,new DateRange {Start = new DateTime(2014, 01, 05), End = new DateTime(2014, 01, 10) } // 3
,new DateRange {Start = new DateTime(2014, 01, 10), End = new DateTime(2014, 01, 15) } // 4
,new DateRange {Start = new DateTime(2014, 01, 15), End = new DateTime(2014, 01, 16) } // 5
,new DateRange {Start = new DateTime(2014, 01, 15), End = new DateTime(2014, 01, 20) } // 6
,new DateRange {Start = new DateTime(2014, 01, 10), End = new DateTime(2014, 01, 20) } // 7
,new DateRange {Start = new DateTime(2014, 01, 15), End = new DateTime(2014, 01, 25) } // 8
,new DateRange {Start = new DateTime(2014, 01, 20), End = new DateTime(2014, 01, 25) } // 9
,new DateRange {Start = new DateTime(2014, 01, 22), End = new DateTime(2014, 01, 25) } // 10
,new DateRange {Start = new DateTime(2014, 01, 10), End = new DateTime(2014, 01, 25) } // 11
,new DateRange {Start = new DateTime(2014, 01, 05), End = new DateTime(2014, 01, 20) } // 12
,new DateRange {Start = new DateTime(2014, 01, 05), End = new DateTime(2014, 01, 25) } // 13
};
foreach (var d in b)
{
Console.WriteLine(string.Format("{0:yyyy-MM-dd}---{1:yyyy-MM-dd} {2} {3:yyyy-MM-dd}---{4:yyyy-MM-dd}",
a.Start,
a.End,
dateRangesOverlap(a, d) ? "overlaps": "does not overlap",
d.Start,
d.End));
}
Console.ReadLine();
}
public class DateRange
{
public DateTime Start {get;set;}
public DateTime End {get;set;}
}
private static bool dateRangesOverlap(DateRange a, DateRange b)
{
return !((b.End < a.Start) || (b.Start > a.End));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment