Учитывая значение даты и число, я хочу увидеть, как это число сравнивается с числом эквивалентного дня в предыдущие годы.
Под «эквивалентным днем» я подразумеваю один и тот же номер недели и тот же день недели, а НЕ одну и ту же дату в календаре.
Например, начиная с такой даты, как 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'
Как я могу легко / надежно найти эквивалентные даты Год / Неделя / День недели, возвращаясь во времени?
Обратите внимание, что меня действительно не волнует, когда начинаются недели или что составляет полную неделю в течение Нового года, мне просто нужен последовательный метод, который позволит проводить точные сравнения из года в год.
strptime
), тогда нет, нет (умеренно чистого) встроенного способа. Желание быть встроенным еще не значит. - person ShadowRanger   schedule 05.12.2016