如何在Python中将格式为2018-04-24T16:42:17Z的datetime字符串转为datetime对象?
解决ISO格式Datetime字符串转Datetime对象的问题
嘿,你遇到的错误是因为用的格式串和输入的Datetime字符串完全不匹配哦!你输入的是ISO 8601格式的字符串2018-04-24T16:42:17Z,但你用的'%b %d %Y %I:%M%p'是对应类似"Apr 24 2018 04:42PM"这种格式的,自然会解析失败。
下面给你几种正确的解决方法:
方法一:使用strptime匹配正确格式
直接用和输入字符串完全对应的格式串即可:
import datetime # 格式串中的T和Z是固定字符,直接写进去;%H是24小时制的小时 dt_object = datetime.datetime.strptime('2018-04-24T16:42:17Z', '%Y-%m-%dT%H:%M:%SZ') print(dt_object) # 输出:2018-04-24 16:42:17
方法二:Python 3.7+ 用fromisoformat更便捷(推荐)
Python 3.7及以上版本支持fromisoformat方法,专门处理ISO格式的时间字符串,不过需要先处理末尾的Z(代表UTC时区):
import datetime dt_str = '2018-04-24T16:42:17Z' # 如果需要保留UTC时区信息,把Z替换为+00:00 dt_with_tz = datetime.datetime.fromisoformat(dt_str.replace('Z', '+00:00')) print(dt_with_tz) # 输出:2018-04-24 16:42:17+00:00 # 如果不需要时区,直接去掉Z即可 dt_without_tz = datetime.datetime.fromisoformat(dt_str.replace('Z', '')) print(dt_without_tz) # 输出:2018-04-24 16:42:17
解析成功后,你就可以用strftime方法把datetime对象转换成任何你需要的格式啦,比如:
# 转换成"YYYY年MM月DD日 HH:MM"格式 print(dt_object.strftime('%Y年%m月%d日 %H:%M')) # 输出:2018年04月24日 16:42
内容的提问来源于stack exchange,提问作者Boudhayan Dev
相关产品推荐
相关产品推荐

