Python 3.6.2 ValueError: time data does not match format

Python 3.6.2 ValueError: time data does not match format

我正在使用 Python 3.6.2 并尝试使用 time.strptime:

转换此字符串

2017-08-07 07:09:31.024719+00:00

使用 ldap3 模块从 Active Directory 查询返回。

我发出以下命令:

from time import strptime
strptime('2017-08-07 07:09:31.024719+00:00', '%Y-%m-%d %H:%M:%S.%f%z')

我得到:

ValueError: time data '2017-08-07 07:09:31.024719+00:00' does not match format '%Y-%m-%d %H:%M:%S.%f%z'

根据文档,我认为这应该有效?另外,我打算使用 timedelta 添加一个偏移量,然后在控制台中将其显示给用户。

我在 python shell 中完成了此操作,如果 +00:00 表示 UTC,它似乎可以解决您的问题。

import datetime.datetime
date_string = '2017-08-07 07:09:31.024719+00:00'
date_string = date_string.replace('+00:00','+0000')
datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S.%f%z')

它returns:

datetime.datetime(2017, 8, 7, 7, 9, 31, 24719, tzinfo=datetime.timezone.utc)

你提到的字符串有点奇怪。您需要单独指定+0000

>>> strptime('2017-08-07 07:09:31.024719 +0000', '%Y-%m-%d %H:%M:%S.%f %z')
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=7, tm_hour=7, tm_min=9, tm_sec=31, tm_wday=0, tm_yday=219, tm_isdst=-1)