Дата проверки по дате в Python

У меня есть переменная date: 2011-01-15 и я бы хотел получить логическую информацию, если указанная дата находится в пределах 3 дней с СЕГОДНЯ. Я не совсем уверен, как это сделать в Python. Я занимаюсь только датой, а не датой.

Мой рабочий пример – «льготный период». Пользователь регистрируется на моем сайте, и если льготный период находится в пределах 3 дней с сегодняшнего дня, для этого пользователя опущены дополнительные скрипты и т. Д.

Я знаю, что вы можете сделать некоторые причудливые / сложные вещи в модуле даты Python, но я не уверен, где искать.

В Python для проверки диапазона вы можете использовать a <= x <= b :

 >>> import datetime >>> today = datetime.date.today() >>> margin = datetime.timedelta(days = 3) >>> today - margin <= datetime.date(2011, 1, 15) <= today + margin True 

Вычитание двух объектов date дает вам объект timedelta , который вы можете сравнить с другими объектами timedelta .

Например:

 >>> from datetime import date, timedelta >>> date(2011, 1, 15) - date.today() datetime.timedelta(1) >>> date(2011, 1, 15) - date.today() < timedelta(days = 3) True >>> date(2011, 1, 18) - date.today() < timedelta(days = 3) False 

Что касается «где посмотреть»: официальная документация отличная.

Другие уже более чем адекватно ответили, поэтому нет необходимости голосовать по этому вопросу.
(Использует технику, показанную в ответе Марка Байера, +1 к нему).

 import datetime as dt def within_days_from_today(the_date, num_days=7): ''' return True if date between today and `num_days` from today return False otherwise >>> today = dt.date.today() >>> within_days_from_today(today - dt.timedelta(days=1), num_days=3) False >>> within_days_from_today(dt.date.today(), num_days=3) True >>> within_days_from_today(today + dt.timedelta(days=1), num_days=3) True >>> within_days_from_today(today + dt.timedelta(days=2), num_days=3) True >>> within_days_from_today(today + dt.timedelta(days=3), num_days=3) True >>> within_days_from_today(today + dt.timedelta(days=4), num_days=3) False ''' lower_limit = dt.date.today() upper_limit = lower_limit + dt.timedelta(days=num_days) if lower_limit <= the_date <= upper_limit: return True else: return False if __name__ == "__main__": import doctest doctest.testmod()