У нас возникла проблема при расчете начала первой недели 2019 года.
Параметры: year
и week_of_year
.Мы всегда смотрим на неделю в понедельник.
Код для получения первого дня определенного года:
from datetime import datetime
result = datetime.strptime('%04d-%02d-1' % (year, week_of_year), '%Y-%W-%w').date()
Это работает в течение большей части лет, но не в случае, когдаyear = 2019
и week_of_year = 1
, Python вычисляет это для даты 2019-01-02
, а не для ожидаемого 2018-12-31
.
Наше текущее решение для решения этой проблемы:
from datetime import datetime, timedelta
result = datetime.strptime('%04d-%02d-1' % (year, week_of_year), '%Y-%W-%w').date()
# Fixes issue with Python date computing returning the incorrect date
# This only occures for some years. E.g. 2019.
offset = result.isocalendar()[1] - datetime.strptime('%04d-01-01' % year, '%Y-%m-%d').date().isocalendar()[1]
if offset > 0:
result = result - timedelta(days=7)
Любоедругие идеи о том, как решить эту проблему?