I'm looking to count the number of dates covered (inclusive) between two DateTimes.
This is not .TotalDays as periods less than 24 hours may still return "2" by overlapping two different days. Likewise, two dates minutes apart should still return "1".
For example:
2012-2-1 14:00 to 2012-2-2 23:00 -> 2 (1st and 2nd Feb)
2012-2-1 14:00 to 2012-2-2 10:00 -> 2 (1st and 2nd Feb)
2012-2-1 23:00 to 2012-2-2 00:00 -> 2 (1st and 2nd Feb)
2012-2-1 23:00 to 2012-2-3 00:00 -> 3 (1st, 2nd, 3rd Feb)
2012-2-1 14:00 to 2012-2-1 15:00 -> 1 (1st Feb)
2012-2-1 14:00 to 2012-2-1 14:00 -> 1 (1st Feb)
2012-1-1 00:00 to 2012-12-31 23:59 -> 366 (All of 2012)
I can get this functionality with the code below:
DateTime dt1 = new DateTime(2000,1,2,12,00,00);
DateTime dt2 = new DateTime(2000,1,3,03,00,00);
int count = 0;
for (DateTime date = dt1; date.Date <= dt2.Date; date = date.AddDays(1))
count++;
return count;
Is there a better way?