Превратить строку типа '2021.186' в дату типа '06.07'
Суть в том, что у меня используется первый вариант '2021.186' (где 186 - количество дней, пройденное в году) для работы с sqlite3, а для return (чтобы все было красиво) нужно иметь что-то похожее на 2 вариант '06.07'
Ответы (2 шт):
Автор решения: insolor
→ Ссылка
С помощью стандартного модуля datetime:
from datetime import datetime, timedelta
s = '2021.186'
year, days = map(int, s.split('.'))
date = datetime(year=year, month=1, day=1) + timedelta(days=days)
print(f"{date:%d.%m.%Y}")
Вывод: 06.07.2021
Автор решения: Andy Pavlov
→ Ссылка
Можно и в одну строку с парсингом через strptime, потом timedelta (т.к. нам нужно смещение в один день) и форматируем дату в строку.
from datetime import datetime, timedelta
date_str = '2021.186'
print((datetime.strptime(date_str, "%Y.%j") + timedelta(days=1)).strftime("%d.%m"))
# 06.07