微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试使用 strptime 解析日期时间字符串时出现格式错误

如何解决尝试使用 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 举报,一经查实,本站将立刻删除。