August 2018
Intermediate to advanced
366 pages
10h 14m
English
We want to grab the list of days between two dates as far as they are working days:
def workdays(d, end, excluded=(6, 7)):
days = []
while d.date() < end.date():
if d.isoweekday() not in excluded:
days.append(d)
d += datetime.timedelta(days=1)
return days
For example, if it's March 22nd, 2018, which is a Thursday, and I want to know the working days up to the next Monday (which is March 26th), I can easily ask for workdays:
>>> workdays(datetime.datetime(2018, 3, 22), datetime.datetime(2018, 3, 26)) [datetime.datetime(2018, 3, 22, 0, 0), datetime.datetime(2018, 3, 23, 0, 0)]
So we know that two days are left: Thursday itself and Friday.
In case you are in a part of the world where you work on Sunday and maybe don't on Fridays, ...