我的字符串是,
str='2014-09-24T15:18:57+0000'
我正在尝试将此字符串转换为有效的datetime对象。怎么做?
我尝试的是,
>>> from datetime import datetime
>>> datetime.strptime(str,'%Y-%m-%dT%H:%M:%S')
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
datetime.strptime(str,'%Y-%m-%dT%H:%M:%S')
File "C:\Python27\lib\_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: +0000
但是当我尝试将字符串更改为str='2014-09-24T15:18:57'
时,它可以正常工作,
>>> datetime.strptime('2014-09-24T15:18:57','%Y-%m-%dT%H:%M:%S')
datetime.datetime(2014, 9, 24, 15, 18, 57)
+0000
出了什么问题,如何避免第一次出错?
答案 0 :(得分:2)
如何添加代表UTC offset in the form +HHMM or -HHMM (empty string if the the object is naive)
的模式%z
因此模式看起来像%Y-%m-%dT%H:%M:%S%z
。
如果您不想+0000
并且它始终位于str
,您可以将代码更改为datetime.strptime(str[:-5],'%Y-%m-%dT%H:%M:%S')
答案 1 :(得分:0)
你有一个字符串和这种模式
2014-09-24T15:18:57+0000
%Y -%m-%dT%H:%M:%S[ ]
你错过了+0000
两个选项:
答案 2 :(得分:0)
试试这个:
import datetime
dt_str='2014-09-24T15:18:57+0000'
new_dt = dt_str[:19]
dt = datetime.datetime.strptime(new_dt, '%Y-%m-%dT%H:%M:%S')
答案 3 :(得分:0)
+0000有什么问题,如何避免第一次错误?
+0000
是UTC偏移量,您可以使用%z
指令来解析它(自Python 3.2起):
>>> from datetime import datetime
>>> time_string = '2014-09-24T15:18:57+0000'
>>> datetime.strptime(time_string, '%Y-%m-%dT%H:%M:%S%z')
datetime.datetime(2014, 9, 24, 15, 18, 57, tzinfo=datetime.timezone.utc)
旧的Python版本不提供 %z
。如果所有时间戳都具有相同的UTC偏移量+0000
,那么您可以将其解析为:
>>> datetime.strptime(time_string, '%Y-%m-%dT%H:%M:%S+0000')
datetime.datetime(2014, 9, 24, 15, 18, 57)
注意:该值是一个天真的日期时间对象(没有时区信息)。 要附加tzinfo,请使用How to parse dates with -0400 timezone string in python?