Given two dates I need to know how many times each day of the week occurs within that range, so that I can calculate a value where the factor varies by day. So I wrote the following code which returns an array of integers, position 0 will tell you how many Sundays there are, position 6 will tell you how many Saturdays, and so on.

int[] CountDays(DateTime firstDate, DateTime lastDate)

{

var totalDays = lastDate.Date.Subtract(firstDate.Date).TotalDays + 1;

var weeks = (int)Math.Floor(totalDays / 7);

var result = Enumerable.Repeat<int>(weeks, 7).ToArray();

if (totalDays % 7 != 0)

{

int firstDayOfWeek = (int)firstDate.DayOfWeek;

int lastDayOfWeek = (int)lastDate.DayOfWeek;

if (lastDayOfWeek < firstDayOfWeek)

lastDayOfWeek += 7;

for (int dayOfWeek = firstDayOfWeek; dayOfWeek <= lastDayOfWeek; dayOfWeek++)

result[dayOfWeek % 7]++;

}

return result;

}

## Comments