#python-3.x
Вопрос:
В Python есть ошибка, которую он должен был вернуть на неделю раньше, по крайней мере, согласно https://www.epochconverter.com/weeks/2020
Кто-нибудь может подтвердить?
Python 3.7.8 (default, Jul 7 2020, 01:20:31)
[Clang 8.0.1 (tags/RELEASE_801/final 366581)] on freebsd12
Type "help", "copyright", "credits" or "license" for more information.
>>> import os, time, datetime
>>>
>>>
>>> def mkTimeFromWeek (week, year):
... return (datetime.datetime.strptime(str(year) "-" str(week) "-1", "%Y-%W-%w"))
...
>>> print(mkTimeFromWeek("33", "2020"))
2020-08-17 00:00:00
>>>
Ответ №1:
Нет, это не ошибка, ваш источник ссылок учитывает первую неделю 2020 года с понедельника 30 декабря по воскресенье 5 января.
Week number From Date To Date
Week 52, 2019 December 23, 2019 December 29, 2019
Week 01 December 30, 2019 January 5, 2020
Week 02 January 6, 2020 January 12, 2020
Week 03 January 13, 2020 January 19, 2020
Однако документы python объясняют, что для %W
Номер недели года (понедельник как первый день недели) в виде десятичного числа. Все дни в новом году, предшествующие первому понедельнику, считаются неделей 0.
Поскольку первый понедельник января приходится на 6-е число, все дни до этого считаются неделей 0. Таким образом, неделя 1 в 2020 году в python datetime начнется 6 января 2020 года.
Таким образом, причина, по которой он заканчивается на 1 неделю, заключается в том, что все даты в году до первого понедельника года считаются неделей 0, а не неделей 1. Вот почему в вашем коде указана ваша 1 неделя.