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.