如何解决Python datetime strptime() 与格式不匹配
我收到以下错误,您可以在其中看到我使用的时间数据和格式
time data '20:07:35 EEDT Wed Mar 31 2021' does not match format '%H:%M:%S %Z %a %b %d %Y'
我使用了 VueUse 中的指令,我看到格式与每个指令的描述相匹配。 你能看出这里有什么问题吗?
解决方法
{{1}},
问题在于 EEDT
。如果您忽略 EEDT(快速修复,不理想),那么您的代码可能如下所示:
text = '20:07:35 EEDT Wed Mar 31 2021';
fmt = '%H:%M:%S EEDT %a %b %d %Y';
datetime.strptime(text,fmt)
--编辑--
用时区解析日期时间对于纯日期时间模块来说是困难的。我不是大专家,但 pytz
或 python-datetutil
应该是不错的选择,根据此页面:https://medium.com/@nqbao/python-timezone-and-daylight-savings-e511a0093d0
您可以通过 IANA time zone name 的解析器将缩写时区映射到 dateutil:
import dateutil
s = '20:07:35 EEDT Wed Mar 31 2021'
tzmapping = {"EEDT": dateutil.tz.gettz('Europe/Athens'),"EEST": dateutil.tz.gettz('Europe/Athens')} # add more if needed...
dtobj = dateutil.parser.parse(s,tzinfos=tzmapping)
那会给你
dtobj
# >>> datetime.datetime(2021,3,31,20,7,35,tzinfo=tzfile('Europe/Athens'))
dtobj.utcoffset()
# >>> datetime.timedelta(seconds=10800) # UTC+3
请注意 timedelta 算术正常工作,即包括 DST 更改:
from datetime import timedelta
dtobj -= timedelta(7) # DST change: dtobj is now EEST,UTC+2
dtobj.utcoffset()
# >>> datetime.timedelta(seconds=7200)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。