Uwaga: PO mówi w komentarzach, "Szukałem przeszłości poniedziałek ". Rozumiem, że szukamy w ostatni poniedziałek, który wydarzył się ściśle przed dzisiejszym dniem.
Obliczenie jest nieco trudne do uzyskania przy użyciu tylko modułu datetime
(szczególnie biorąc pod uwagę powyższą interpretację "zeszłego poniedziałku" i jeśli chcesz uniknąć clunky if-statements
). Na przykład, jeśli today
jest poniedziałek, takich jak 2013-12-23
,
today - DT.timedelta(days=today.weekday())
powraca 2013-12-23
, który jest taki sam dzień jak today
(nie przeszłość poniedziałek).
Zaletą korzystania z dateutil module jest to, że nie trzeba wykonywać skomplikowanych obliczeń umysłowych ani zmuszać czytelnika do robienia tego samego, aby uzyskać prawidłową datę. dateutil
robi to wszystko dla Ciebie:
import dateutil.relativedelta as rdelta
import datetime as DT
today = DT.date(2013, 12, 23) # Monday
past_monday = today + rdelta.relativedelta(days=-1, weekday=rdelta.MO(-1))
print(past_monday)
# 2013-12-16
next_monday = today + rdelta.relativedelta(days=1, weekday=rdelta.MO(+1))
print(next_monday)
# 2013-12-30
Zauważ, że days=-1
jest potrzebna, aby zagwarantować, że past_monday
jest inny dzień niż today
.
Już w poniedziałek lub w miniony poniedziałek? –
Szukałem ostatniego poniedziałku – Joe