65.9K
CodeProject is changing. Read more.
Home

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

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Nov 23, 2011

CPOL
viewsIcon

4830

Didn't read it very closely, haven't tested it very thoroughly, but, you get the idea:public int GetNumberOfRecurrances(DayOfWeek weekDay, DateTime startDate, DateTime endDate){ int distanceToFirstInstance = ((int)weekDay - ((int)startDate.DayOfWeek)); //determine integer...

Didn't read it very closely, haven't tested it very thoroughly, but, you get the idea:
public int GetNumberOfRecurrances(DayOfWeek weekDay, DateTime startDate, DateTime endDate)
{
    int distanceToFirstInstance = ((int)weekDay - ((int)startDate.DayOfWeek));

    //determine integer number of days with left
    int range = ((int)((endDate.ToUniversalTime().Ticks / 10000000) - (startDate.ToUniversalTime().Ticks / 10000000))) / 86400;

    return ((int)distanceToFirstInstance >= 0
        ? (int)((Math.Floor((decimal)(range - distanceToFirstInstance) / 7)) + 1)
        : (int)((Math.Floor((decimal)(range - (distanceToFirstInstance + 7)) / 7)+1)));
}