Python中如何将2017-10-16T08:27:16+0000转换为指定datetime格式?
解决时间格式转换的ValueError问题
哦,我一眼就看出问题啦!你搞混了strptime()和strftime()的核心用法,这才触发了ValueError。让我给你一步步理清:
先搞懂两个方法的区别
strptime():负责解析——把一个符合特定格式的时间字符串,转换成Python的datetime对象。它的第二个参数必须是原始时间字符串的格式,而不是你想要的目标格式!strftime():负责格式化——把已经解析好的datetime对象,转换成你想要的任意时间字符串格式。它的参数是你最终想要的格式模板。
正确的实现步骤
1. 解析原始时间字符串
你的原始时间是2017-10-16T08:27:16+0000,对应的格式模板应该是%Y-%m-%dT%H:%M:%S%z,每个占位符的含义:
%Y:4位数的年份(比如2017)%m:2位数的月份(比如10)%d:2位数的日期(比如16)T:字符串里的固定分隔符,直接写进模板%H:24小时制的小时(比如08)%M:分钟(比如27)%S:秒(比如16)%z:时区偏移(比如+0000)
2. 格式化为目标字符串
得到datetime对象后,用strftime()传入你的目标格式"The %d %B %Y at. %H:%M"即可,其中%B代表月份的英文全称。
完整代码示例
import datetime # 第一步:解析原始时间字符串为datetime对象 original_time = "2017-10-16T08:27:16+0000" dt = datetime.datetime.strptime(original_time, "%Y-%m-%dT%H:%M:%S%z") # 第二步:格式化得到目标字符串 target_format = dt.strftime("The %d %B %Y at. %H:%M") # 如果需要月份全小写(和你示例里的october一致),可以加.lower() # target_format = dt.strftime("The %d %B %Y at. %H:%M").lower() print(target_format) # 输出:The 16 October 2017 at. 08:27 # 小写版本:The 16 october 2017 at. 08:27
内容的提问来源于stack exchange,提问作者Fusecube
相关产品推荐
相关产品推荐

