Weekdays Between Two Dates
July 5, 2013
Many programming languages provide a library function that calculates a serial number for each day, making it easy to calculate the number of days between two dates; we provide such a function in the Standard Prelude. Sometimes, though, the need is to calculate weekdays rather than total days.
Your task is to write a program that calculates the number of weekdays between two dates. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.
I found it most intuitive to break the count into whole weeks, days in first week, days in last week
def get_weekdays_between_helper(d1,d2): diff = (d2 - d1).days dow1 = d1.isoweekday() dow2 = d2.isoweekday() dd1 = min (6, dow1) dd2 = min (6, dow2) # special case - in same week if diff < 7 and dow1 <= dow2: return (0,dd2 - dd1) whole_weeks = diff / 7 if dow1 <= dow2: whole_weeks -= 1 comps = ( 5 * whole_weeks, (6-dd1), + dd2-1) return sum(comps)