首页 > 解决方案 > 将时区感知字符串转换为日期时间 python,其格式类似于 '2012-11-01T04:16:13.000Z'

问题描述

我偶然发现了一个编码问题,我必须将时区感知字符串转换2021-11-01T02:08:13.000Z为 Python 日期时间对象。

我已经看到很多例子,其中时区感知字符串就像格式一样2012-11-01T04:16:13-04:00,但对我来说,你可以看到字符串与末尾的“.000Z”略有不同。

我尝试了以下代码:

from datetime import datetime

format = '%Y-%m-%dT%H:%M:%S%z'
time='2012-11-01T04:16:13.000Z'
date_time_obj = datetime.strptime(time, format)
print ("date",date_time_obj)

但我得到了错误:

ValueError: time data '2012-11-01T04:16:13.000Z' does not match format '%Y-%m-%dT%H:%M:%S%z'

也试过这样做:

from datetime import datetime
time='2012-11-01T04:16:13.000Z'
date_time_obj = datetime.fromisoformat(time)

但我收到了这个错误:

Errpr: Invalid ISO format string:

我浏览了很多页面,但无法找到该特定格式以及如何将其转换为可识别日期时间的字符串。任何人都可以请帮忙。

标签: pythonpython-3.xdatetimetimezone

解决方案


您可以使用'dateutil.parser.isoparse'完成所有这些操作。无需去除信息(减少毫秒),无需对格式化字符串大惊小怪。

from dateutil import parser
time='2012-11-01T04:16:13.000Z'
date_time_obj = parser.isoparse(time)
print ("date",date_time_obj)

> date 2012-11-01 04:16:13+00:00

推荐阅读