Хм, можно попытаться сделать так:
from datetime import datetime, timedelta
input_date = datetime(2023, 4, 14)
def next_week(date):
days_to_next_week = 7 - date.isoweekday()
result = (timedelta(days=days_to_next_week) + date).strftime('%d.%m.%Y %H:%M:%S')
return result
output_date = next_week(input_date)
print(output_date)
date.isoweekday()
- возвращает текущий день недели в виде числа. 1 = Понедельник, 2 = Вторник ... 7 = Воскресенье.
timedelta(days=days_to_next_week) + date
- сколько осталось дней + введённая дата.
strftime('%d.%m.%Y %H:%M:%S')
- далее переводим в формат который вы хотели.
Символ |
Значение |
%d |
Текущий день в формате DD |
%m |
Текущий месяц в формате MM |
%Y |
Текущий год в формате YYYY |
%H |
Текущий час |
%M |
Текущая минута |
%S |
Текущая секунда |
А чтобы добиться конкретно конца дня, можно сделать так:
from datetime import datetime, timedelta
input_date = datetime(2023, 4, 14)
def next_week(date):
days_to_next_week = 7 - date.isoweekday()
result = (timedelta(days=days_to_next_week + 1) + date - timedelta(seconds=1)).strftime('%d.%m.%Y %H:%M:%S')
return result
output_date = next_week(input_date)
print(output_date)
timedelta(days=days_to_next_week + 1) + date - timedelta(seconds=1)
- эквивалентно = недостоющее_кол-во_дней_до_конца_недели + 1_день + текущая_дата - 1_секунда