Jak zdobyć w ostatni piątek?

Poniższy kod powinien powrócić w ostatni piątek, 16:00:00. Ale wracaPiątek poprzedniego tygodnia. Jak to naprawić?

now = datetime.datetime.now()
test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4, weeks=-1))
test = test.replace(hour=16,minute=0,second=0,microsecond=0)

Aktualizuj. Teraz stosuję następujące podejście - czy to najlepsze?

now = datetime.datetime.now()
if datetime.datetime.now().weekday() > 4:
    test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4))
else:
    test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4, weeks=-1))
test = test.replace(hour=16,minute=0,second=0,microsecond=0)

Upd2. Podam tylko przykład. Załóżmy, że dzisiaj jest5 października 2012. W przypadku gdy bieżący czas jest równy lub mniejszy niż16:00 powinien wrócić28 września 2012, Inaczej -5 października 2012.

questionAnswers(6)

yourAnswerToTheQuestion