将str日期转换为时区的日期时间

时间:2019-10-07 06:17:06

标签: python datetime datetime-format

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

strdate = '2019-10-07T06:09:28.984Z'

如何将其转换为日期时间对象?

dt = datetime.datetime.strptime(strdate, '%Y-%m-%d')

如果我像上面那样使用strptime,我会收到“ ValueError:未转换的数据仍然存在:T06:09:54.346Z” 如果字符串日期中包含“ T”和“ Z”,该怎么办?我想要本地时间的数据。但是该字符串是否真正了解时区,以便我可以正确地对其进行转换?在这种情况下,我知道时区,但是如果我不知道该怎么办?

2 个答案:

答案 0 :(得分:1)

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

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'))

演示:https://repl.it/repls/RotatingSqueakyCertifications

答案 1 :(得分:1)

import datetime
strdate = '2019-10-07T06:09:28.984Z'
dt=datetime.datetime.strptime(strdate, "%Y-%m-%dT%H:%M:%S.%fZ")
print(dt)

# output - 2019-10-07 06:09:28.984000