2016-07-22 5 views
3

У меня есть год и неделя номер, который я хочу преобразовать в объект datetime.datetiem. Мое (наивное?) Чтение документации намекнуло, что strptime('2016 00', '%Y %W') должен сделать именно это. Однако:Datetime из года и недели номер

In [2]: from datetime import datetime 

In [3]: datetime.strptime('2016 00', '%Y %W') 
Out[3]: datetime(2016, 1, 1, 0, 0) 

In [4]: datetime.strptime('2016 52', '%Y %W') 
Out[4]: datetime(2016, 1, 1, 0, 0) 

Что я делаю неправильно?

ответ

2

Получается, что номер недели недостаточно для strptime, чтобы получить дату. Добавьте день недели по умолчанию в строку, чтобы она работала.

> from datetime import datetime 
> myDate = "2016 51" 
> datetime.strptime(myDate + ' 0', "%Y %W %w") 
> datetime.datetime(2016, 12, 25, 0, 0) 

0 рассказывает, чтобы выбрать воскресенье этой недели, но вы можете изменить это в диапазоне от 0 до 6 на каждый день.

1

Из docs (примечание 7 в нижней части):

При использовании с strptime() метод, %U и %W используются только в расчетах, когда день недели и год уточняются.

Таким образом, до тех пор, пока вы не укажете будний день, вы получите тот же результат, что и datetime.strptime('2016', '%Y').

Смежные вопросы