from datetime import date def satandsun(input): d = input.toordinal() last = d - 6 sunday = last - (last % 7) saturday = sunday + 6 print date.fromordinal(sunday) print date.fromordinal(saturday)
Note that this seems to be going through all your cases:
>>> satandsun(date(2013, 8, 10)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 11)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 12)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 13)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 14)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 15)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 16)) 2013-08-04 2013-08-10 >>> satandsun(date(2013, 8, 17)) 2013-08-11 2013-08-17
source share