将str日期转换为具有时区的datetime

2024-10-02 04:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

如何将其转换为datetime对象?你知道吗

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

如果我像上面那样使用strtime,我会得到“ValueError:unverteddata remains:T06:09:54.346Z” 如果字符串日期中包含“T”和“Z”,我该怎么办?我要当地时间的数据。但是字符串真的有时区意识吗,这样我就可以正确地转换它了?在这种情况下,我知道时区,但如果我不知道呢?你知道吗


Tags: 数据对象字符串apidatetime时间dtvalueerror
2条回答

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

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

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

相关问题 更多 >

    热门问题