Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / ASP.NET

Find the count of a weekday between two dates without iterating/looping

4.76/5 (16 votes)
25 Dec 2011CPOL 60.3K  
Find the count of a weekday between two dates without iterating/looping

When you want number of Thursdays or any other week day between two dates, there is no direct function in .NET. To fill the gap, I have written the following function that gives the count of a weekday between two given dates. This function is constructed without using iteration/loop statements.


C#
public static int  findWeekCount(DateTime startDate, DateTime toDate, DayOfWeek Week)
{
    int _daysBetweenDates = (toDate - startDate).Days;  // days between start date and end date
    int _adjustingDays = (7 + (int)Week - (int)startDate.DayOfWeek) % 7; // days between week of start date and searching week
    int _oddDays = _daysBetweenDates % 7; // remainder of total days after dividing 7

    int _completeWeekTurns = (_daysBetweenDates) / 7;
    int _addTurns = _oddDays >= _adjustingDays  ? 1 : 0;

    return _completeWeekTurns + _addTurns;
}

Usage:


C#
DateTime sDate = new DateTime(2011, 09, 1);
DateTime eDate = new DateTime(2011, 11, 30);
DayOfWeek fWeek = DayOfWeek.Monday;

int totCount = findWeekCount(sDate, eDate, fWeek);
MessageBox.Show(totCount.ToString()); //Result : 13 (Mondays)


Hope this is useful. Any alternative is highly appreciated.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)