2016-05-06 2 views
2
>>> a = "2016-03-22 12:33:45.7565" 
>>> datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%f") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 328, in _strptime 
    data_string[found.end():]) 
ValueError: unconverted data remains: .7565 
>>> datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%S") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 328, in _strptime 
    data_string[found.end():]) 
ValueError: unconverted data remains: .7565 

Я использовал %S и %f, но как я могу справиться секундами, если это тип float?DateTime объект из строки, секунды в поплавке

Любая помощь будет оценена

ответ

6

Цифры после десятичной точки микросекунд, и отформатирован отдельно от секунд:

>>> a = "2016-03-22 12:33:45.7565" 
>>> datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f") 
datetime.datetime(2016, 3, 22, 12, 33, 45, 756500) 
+0

он отлично работает, спасибо – Hackaholic

1

Просто альтернативный подход - пусть dateutil parser сделать работу:

>>> from dateutil.parser import parse 
>>> a = "2016-03-22 12:33:45.7565" 
>>> parse(a) 
datetime.datetime(2016, 3, 22, 12, 33, 45, 756500) 
+0

Нельзя ли это сделать с помощью модуля datetime? – Hackaholic

+0

В любом случае спасибо за альтернативный подход. – Hackaholic

2
In [18]: a = "2016-03-22 12:33:45.7565" 

In [19]: datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f") 
Out[19]: datetime.datetime(2016, 3, 22, 12, 33, 45, 756500) 
+0

Я нахожусь на python 2.7. он работает для меня – Pavan

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