using System.Collections.Generic;
public static void Main()
List<DateTime> sampleDates = new List<DateTime>()
new DateTime(2017, 7, 12),
new DateTime(2017, 7, 13),
new DateTime(2017, 7, 14),
new DateTime(2017, 7, 5),
new DateTime(2017, 7, 4),
new DateTime(2017, 7, 7),
new DateTime(2017, 6, 30),
new DateTime(2017, 6, 27),
new DateTime(2017, 6, 15),
new DateTime(2017, 6, 7),
new DateTime(2017, 6, 1),
new DateTime(2017, 5, 15),
new DateTime(2017, 5, 2),
int[] weekCount = new[] { 0, 0, 0, 0 };
var todaysDate = DateTime.Now;
foreach(var date in sampleDates)
if(date < todaysDate.AddDays(-28) || date > todaysDate)
for(int i = 0; i < 4; i++)
if(DateInRange(date, todaysDate.AddDays((i + 1) * -7), todaysDate.AddDays(-7 * i)))
Console.WriteLine("Week 1: {0}", weekCount[0]);
Console.WriteLine("Week 2: {0}", weekCount[1]);
Console.WriteLine("Week 3: {0}", weekCount[2]);
Console.WriteLine("Week 4: {0}", weekCount[3]);
private static bool DateInRange(DateTime date, DateTime minDate, DateTime maxDate)
return date.Date > minDate.Date && date.Date < maxDate.Date;