Python 将时区的str date转换为datetime

Python 将时区的str date转换为datetime,python,datetime,datetime-format,Python,Datetime,Datetime Format,我有一个返回这个日期字符串的API strdate = '2019-10-07T06:09:28.984Z' 如何将其转换为datetime对象 dt = datetime.datetime.strptime(strdate, '%Y-%m-%d') 如果我像上面那样使用strtime,我会得到“ValueError:未转换的数据仍然存在:T06:09:54.346Z” 如果字符串日期中包含“T”和“Z”,我该怎么办?我要本地时间的数据。但是字符串真的是时区感知的,这样我就可以正确地转换它了

我有一个返回这个日期字符串的API

strdate = '2019-10-07T06:09:28.984Z'
如何将其转换为datetime对象

dt = datetime.datetime.strptime(strdate, '%Y-%m-%d')
如果我像上面那样使用strtime,我会得到“ValueError:未转换的数据仍然存在:T06:09:54.346Z”
如果字符串日期中包含“T”和“Z”,我该怎么办?我要本地时间的数据。但是字符串真的是时区感知的,这样我就可以正确地转换它了吗?在本例中,我知道时区,但如果我不知道怎么办?

错误是因为您没有在格式字符串中包含时间部分。这样做:

datetime.strptime('2019-10-07T06:09:28.984Z', '%Y-%m-%dT%H:%M:%S.%f%z')
这导致:

datetime.datetime(2019, 10, 7, 6, 9, 28, 984000, tzinfo=datetime.timezone.utc)
如果要将其转换为本地时区,请执行以下操作:

from pytz import timezone

dt = datetime.strptime(strdate, '%Y-%m-%dT%H:%M:%S.%f%z')
local_dt = dt.astimezone(timezone('Asia/Tokyo'))

演示:

错误是因为格式字符串中没有包含时间部分。这样做:

datetime.strptime('2019-10-07T06:09:28.984Z', '%Y-%m-%dT%H:%M:%S.%f%z')
这导致:

datetime.datetime(2019, 10, 7, 6, 9, 28, 984000, tzinfo=datetime.timezone.utc)
如果要将其转换为本地时区,请执行以下操作:

from pytz import timezone

dt = datetime.strptime(strdate, '%Y-%m-%dT%H:%M:%S.%f%z')
local_dt = dt.astimezone(timezone('Asia/Tokyo'))
演示: