Примітка. У коментарях ОП сказано: " Я шукав минулий понеділок ". Я сприймаю це як означає, що ми шукаємо останнього понеділка, який відбувся строго до сьогодні.
Правильно розрахувати, використовуючи лише 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
.