2017-02-06 11 views
1

Я пробовал следующую строку кода, которая возвращает странный результат.dateutil.parser.parse не возвращает правильное время datetime

In [68]: 
from datetime import datetime 
from dateutil.parser import parse 
​ 
parse('2017/JAN') 

Out[68]: 
datetime.datetime(2017, 1, 6, 0, 0) 

Поскольку анализатор было приказано разобрать даты и времени строку до января, то можно обоснованно предположить, что выход должен быть первый день месяца, а именно, 2017/январь/1.

Однако, странно, выход был 2017/январь/6, дата которого совпадает с датой на моем ПК с ОС Windows.

Итак, я попытался изменить дату на вчерашний день (февраль/5), а выход изменился на дату и время (2017, 1, 5, 0, 0), что соответствует 2017/JAN/5.

Похоже, что парсер берет дату из календаря локального компилятора, на котором он запущен, в случае, если дата не указана в качестве аргумента функции.

Это поведение по дизайну или, может быть, ошибка? Если это предназначено, что было бы логичным?

Спасибо

+0

может у дать разъяснение вашего вопрос –

ответ

0

Вы должны смотреть в dateutil пакет.

Thers должны быть разные форматы для синтаксического анализа:

Если и нужно больше деталей просто увидеть этот parse link

EDIT: Небольшой пример для и,

from datetime import datetime 
datetime.utcfromtimestamp(float("1294989360")) 
+0

спасибо, что ответили. На веб-странице документа dateutil не упоминается, что произойдет, если дата не указана в строке времени даты, переданной парсеру, но только год и месяц. Я пытался использовать парсер в качестве удобного способа создания datetime. – Royalblue

+0

, тогда я дам вам простой пример –