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

将datetime转回time.struct_time时报TypeError,求技术解决方案

解决datetime转time.struct_time时的TypeError问题

我来帮你搞定这个转换报错的问题!你遇到的TypeError: expected string or buffer,十有八九是因为误用了time.strptime()来直接转换datetime对象——这个函数的第一个参数要求是字符串,不是datetime实例,所以才会触发类型错误。

这里给你两种靠谱的解决方法:

方法1:用datetime内置的timetuple()(最推荐)

datetime对象自带的timetuple()方法可以直接返回对应的time.struct_time对象,一步到位,简单高效:

import datetime
import time

# 假设你已经得到了调整到次日的half_hour datetime对象
half_hour = datetime.datetime.now() + datetime.timedelta(days=1)  # 模拟你的场景

# 直接转换
struct_time_result = half_hour.timetuple()
print(type(struct_time_result))  # 输出 <class 'time.struct_time'>

方法2:先转字符串再用time.strptime()

如果你一定要用time.strptime(),那就得先把datetime对象转换成符合格式的字符串,再传入函数:

# 先将datetime转为指定格式的字符串
dt_string = half_hour.strftime("%Y-%m-%d %H:%M:%S")
# 再用strptime解析成struct_time
struct_time_result = time.strptime(dt_string, "%Y-%m-%d %H:%M:%S")

为什么之前会报错?

你之前的代码应该是直接把half_hour这个datetime对象传给了time.strptime(),而这个函数只接受字符串作为第一个参数,自然就抛出了类型错误。用timetuple()是最直接的转换方式,不需要额外处理字符串格式,推荐优先使用。

另外提个小提醒:如果你的datetime对象包含时区信息(带tzinfo),timetuple()会自动忽略时区,转换成当前系统的本地时间对应的struct_time;如果需要处理时区,记得先把datetime转成目标时区的时间再做转换哦。

内容的提问来源于stack exchange,提问作者Knight Rider

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:29:08