Вы можете проверить, является ли день больше 22, и если это так, вы установите его на 8-е число следующего месяца. Если оно между 8 и 22, вы устанавливаете его на 22 того же месяца, а если оно ниже 8-го, вы устанавливаете его на 8-е число месяца. Возможно, есть более элегантные способы сделать это с использованием математики дат, но это подойдет для вашего сценария.
Используйте модуль datetime
, чтобы узнать, что такое «следующий месяц». Один из способов сделать это - добавить timedelta
из 1 месяца к первому из текущего месяца, а затем изменить дату этого объекта datetime
на восьмую. Вот краткий пример того, как это может выглядеть:
from datetime import date, timedelta
input_date = date(2019, 12, 23)
if input_date.day > 22:
output_date = date(input_date.year, input_date.month) + timedelta(days=31)
output_date = output_date.replace(day = 8)
Вы можете прочитать подробнее о том, как работает модуль datetime
на официальной документации . Это довольно долго читать, но у меня на самом деле эта страница помечена закладкой, потому что мне всегда нужно возвращаться и ссылаться на то, как на самом деле использовать модуль:)