Примітка. У коментарях ОП сказано: " Я шукав минулий понеділок ". Я сприймаю це як означає, що ми шукаємо останнього понеділка, який відбувся строго до сьогодні.
Правильно розрахувати, використовуючи лише datetimeмодуль, трохи складно (особливо, враховуючи наведене вище тлумачення "минулого понеділка", і якщо ви хочете уникнути незграбності if-statements). Наприклад, якщо todayце понеділок, такий як 2013-12-23,
today - DT.timedelta(days=today.weekday())
повертається 2013-12-23, це той самий день, що й today(не минулий понеділок).
Перевага використання модуля dateutil полягає в тому, що вам не потрібно робити хитрих розумових обчислень і не змушувати читача робити те саме, щоб отримати правильну дату. dateutilробить все це за вас:
import dateutil.relativedelta as rdelta
import datetime as DT
today = DT.date(2013, 12, 23)
past_monday = today + rdelta.relativedelta(days=-1, weekday=rdelta.MO(-1))
print(past_monday)
next_monday = today + rdelta.relativedelta(days=1, weekday=rdelta.MO(+1))
print(next_monday)
Зверніть увагу, що days=-1це потрібно, щоб гарантувати, що past_mondayдень відрізняється від дня today.