Учитывая значение даты и число, я хочу посмотреть, как это число сравнивается с тем, которое было в эквивалентный день в предыдущие годы.В Python, как я могу получить дату на основе года, номера недели и дня недели?
Для «эквивалентного дня», я имею в виду тот же номер недели и тот же день недели, а не ту же дату календаря.
Например, начиная с даты, как 25 мая 1975 года:
>>> holyGrail = datetime.datetime(1975,5,25)
, которая является седьмой день 21-й недели:
>>> holyGrail.isocalendar()
(1975, 21, 7)
>>>
Я хочу, чтобы подтянуть даты 7 день 21-й недели в течение 1974, 1973 и т.д ..
по сути я хочу сделать что-то вроде этого:
>>> yearBack = datetime.datetime().isocalendar(1974,21,7)
и он вернуть мне дату, соответствующую этой неделе & день недели, который в этом случае будет 26 мая 1974 года, не 25:
>>> yearBack = datetime.datetime(1974,5,26)
>>> yearBack.isocalendar()
(1974, 21, 7)
>>>
Я вижу из https://stackoverflow.com/a/28069361/5324657, что существует (без документов?) формат% V в strftime()
, возвращая ISO-8601 номер недели, который работает нормально в STRFTIME и, кажется, что мне нужно, однако, когда я пытаюсь использовать тот же формат% V в strptime()
я получаю ошибку
ValueError: 'V' is a bad directive in format '%Y-%V-%w'
Как я могу сильно/надежно вытягивать эквивалент Год/неделяНо/Дни недели возвращаются во времени?
Обратите внимание, что меня не волнует, когда начинаются недели или что представляет собой полную неделю в течение Нового года, мне просто нужен последовательный метод, который позволит точно сравнивать год за годом.
Дубликат http://stackoverflow.com/a/7687085/5324657, но этот удобный модуль isoweek не встроен. Есть ли встроенный способ сделать это? –
Этот дублированный вопрос дает единственные встроенные способы сделать это; если ваше определение недели не соответствует Python (и вы не можете использовать Python 3.6 в соответствии со стандартами ISO strptime), то нет, нет (умеренно чистый) встроенный способ. Желание быть встроенным не делает это так. – ShadowRanger