You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:13:59