Python strTime ValueError:时间数据与格式不匹配
我已经在postgreSQL数据库的datetime列中添加了时区 现在,每当我想比较日期时,我都会遇到上面的错误。 在某些情况下,我有JSON请求,datetime对象作为字符串传递,因此我需要使用我获得的附加时区信息来解析它们: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:
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要用冒号保存它,我现在需要一些变通代码来替换它。这真的很奇怪。不知道我不使用它,如果存储在数据库中的数据类型是实际的日期时间类型,并且直接从数据库加载,那么您可能会更幸运,在这种情况下,数据类型将被推断出来,但我不能告诉您,因为我在这方面没有专业知识