Python strTime ValueError:时间数据与格式不匹配

Python strTime ValueError:时间数据与格式不匹配,python,datetime,Python,Datetime,我已经在postgreSQL数据库的datetime列中添加了时区 现在,每当我想比较日期时,我都会遇到上面的错误。 在某些情况下,我有JSON请求,datetime对象作为字符串传递,因此我需要使用我获得的附加时区信息来解析它们: ValueError: time data '2018-05-02 11:52:26.108540+02:00' does not match format '%Y-%m-%d %H:%M:%S.%f+%Z' 早些时候我有: 2018-05-02 11:52:

我已经在postgreSQL数据库的datetime列中添加了时区

现在,每当我想比较日期时,我都会遇到上面的错误。 在某些情况下,我有JSON请求,datetime对象作为字符串传递,因此我需要使用我获得的附加时区信息来解析它们:

ValueError: time data '2018-05-02 11:52:26.108540+02:00' 
does not match format '%Y-%m-%d %H:%M:%S.%f+%Z' 
早些时候我有:

2018-05-02 11:52:26.108540
与以下各项完美配合:

%Y-%m-%d %H:%M:%S.%f
添加的新信息是:
+02:00

在中,它告诉我使用
%z
%z
,但它不起作用

编辑:


我正在使用Python 3,问题是偏移量
+02:00
您需要删除冒号
':'
,然后它就可以工作了:

In[48]:
dt.datetime.strptime('2018-05-02 11:52:26.108540+0200', '%Y-%m-%d %H:%M:%S.%f%z')

Out[48]: datetime.datetime(2018, 5, 2, 11, 52, 26, 108540, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))

因此,您需要检查所有日期时间字符串并删除它,以便正确解析它。

您需要删除冒号并使用小的
%z
,这样才能工作

>>> s = '2018-05-02 11:52:26.108540+02:00'
>>> fmt = %Y-%m-%d %H:%M:%S.%f%z'
>>> time.strptime(s, fmt)
time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=11, tm_min=52, tm_sec=26, tm_wday=2, tm_yday=122, tm_isdst=-1)

您使用的是哪个python版本?如果您使用的是2.7,那么如果我没有记错的话,它将不起作用。我以前有过这个问题。我使用的是python 3。问题是偏移量上的
:“
,如果您删除它,它将起作用谢谢,我将尝试它,但是为什么postgreSQL要用冒号保存它,我现在需要一些变通代码来替换它。这真的很奇怪。不知道我不使用它,如果存储在数据库中的数据类型是实际的日期时间类型,并且直接从数据库加载,那么您可能会更幸运,在这种情况下,数据类型将被推断出来,但我不能告诉您,因为我在这方面没有专业知识