Python 将字符串转换为日期时间格式

Python 将字符串转换为日期时间格式,python,datetime,timezone,Python,Datetime,Timezone,我该如何解决这个问题 错误是: ValueError: time data '2016-10-20 03:43:11+00:00' does not match format '%Y-%m-%d %H:%M:%S%z' 代码是: fmt = "%Y-%m-%d %H:%M:%S%z" dt = datetime.strptime(row['Time'], fmt) 搜索一下会给你带来一些好处 第一个选项: from datetime import datetime as dt t = '2

我该如何解决这个问题

错误是:

ValueError: time data '2016-10-20 03:43:11+00:00' does not match format '%Y-%m-%d %H:%M:%S%z'
代码是:

fmt = "%Y-%m-%d %H:%M:%S%z"
dt = datetime.strptime(row['Time'], fmt)

搜索一下会给你带来一些好处

第一个选项

from datetime import datetime as dt

t = '2016-10-20 03:43:11+00:00'
fmt = "%Y-%m-%d %H:%M:%S+00:00"
d = dt.strptime(t, fmt)

# output datetime.datetime(2016,10,20,3,43,11)
from dateutil import parser as psr

t = '2016-10-20 03:43:11+00:00'

d = psr.parse(t)

# output datetime.datetime(2016,10,20,3,43,11, tzinfo=tzutc())
第二个选项

from datetime import datetime as dt

t = '2016-10-20 03:43:11+00:00'
fmt = "%Y-%m-%d %H:%M:%S+00:00"
d = dt.strptime(t, fmt)

# output datetime.datetime(2016,10,20,3,43,11)
from dateutil import parser as psr

t = '2016-10-20 03:43:11+00:00'

d = psr.parse(t)

# output datetime.datetime(2016,10,20,3,43,11, tzinfo=tzutc())

+00:00
%z
不匹配,因为它有一个冒号。如果你能指望数据的格式总是正确的,你可以做
datetime.strtime(row['Time'][:22]+row['Time'][23:],fmt)
。如果你的日期格式是固定的,你也可以按如下所示更改
fmt
。@StevenRumbalski你是对的,抱歉:)我在测试代码中输入了一个错误,我刚刚看到了它@斯图卡什:这完全取决于OP的日期是否有需要保留的上下文。在很多情况下,时区并不重要。@StevenRumbalski是的,我想如果上面显示的日期格式是OP想要保留的,我们可以只更改
fmt
,这取决于数据是否具有常量格式。