如何解决尝试使用 strptime 解析日期时间字符串时出现格式错误
尝试将日期时间字符串解析为 unix:
from calendar import timegm
from datetime import datetime
print(timegm(datetime.strptime(('2021-07-21 00:00:07.223977216+00:00'),'%Y-%m-%d %H:%M:%s.%f')))
结果
ValueError: time data '2021-07-21 00:00:07.223977216+00:00' does not match format '%Y-%m-%d %H:%M:%s.%f+00:00'
尝试了很多,到目前为止都无法到达......
解决方法
您的日期采用 ISO 格式,因此您可以使用 datetime.fromisoformat
:
>>> from datetime import datetime
>>> datetime.fromisoformat("2021-07-21 00:00:07+00:00")
datetime.datetime(2021,7,21,tzinfo=datetime.timezone.utc)
,
因此,如果您查看所提供日期时间的格式,则它没有格式化程序正在寻找的小数秒:
# '2021-07-21 00:00:07+00:00' <- this date time
# '%Y-%m-%d %H:%M:%S.%f' <- in this format,is parsing like below
# 'YYYY-MM-DD HH:MM:SS.ff' (note the ff part is missing,then there's a +00:00 part leftover so the format is breaking)
如果您不需要微秒,请从格式字符串中删除 '.%f' 部分。否则,如果您要解析一系列包含小数部分的值,您将需要同时提供这两个选项:
try:
timestamp = datetime.strptime(your_string_here,'%Y-%m-%d %H:%M:%S.%f')
except ValueError:
timestamp = datetime.strptime(your_string_here,'%Y-%m-%d %H:%M:%S')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。