首页 > 解决方案 > 我应该使用什么指令来解码这个带有 datetime.strptime 的日期字符串?

问题描述

我一直在使用以下指令来解码这个字符串。

datetime.strptime('2021-07-09T21:01:49.926811Z', '%Y-%m-%dT%H:%M:%S.%f%Z')

但我收到此错误消息:

ValueError:时间数据“2021-07-09T21:01:49.926811Z”与格式“%Y-%m-%dT%H:%M:%S.%f%Z”不匹配

什么是正确的格式?

标签: pythondatetime

解决方案


您必须将 '%Z' 替换为 'Z':

>>> datetime.strptime('2021-07-09T21:01:49.926811Z', '%Y-%m-%dT%H:%M:%S.%fZ')
datetime.datetime(2021, 7, 9, 21, 1, 49, 926811)

或使用fromisoformat(并删除尾随 Z):

>>> datetime.fromisoformat(s[:-1])
datetime.datetime(2021, 7, 9, 21, 1, 49, 926811)

或者使用dateutil最灵活的:

# from dateutil import parser
>>> parser.parse(s)
datetime.datetime(2021, 7, 9, 21, 1, 49, 926811, tzinfo=tzutc())

推荐阅读