为何出现TypeError: must be str, not builtin_function_or_method错误?时间计算代码求助
错误成因分析与修复方案
首先,这个TypeError: must be str, not builtin_function_or_method错误的核心原因是:你在代码里把一个函数对象当成字符串来进行操作了。
最可能的场景是:如果你的代码中不小心把time.strftime('%H:%M')写成了time.strftime(漏掉了调用函数的括号和参数),那time.strftime本身是一个内置函数对象,而不是它执行后返回的字符串。当你试图对这个函数对象做切片(比如[0:2])或者转成整数时,Python自然会报错,因为它无法把函数对象当成字符串处理。
看你贴的代码片段,虽然写了time.strftime('%H:%M')[0:2],但可能实际运行时存在笔误(比如不小心删了括号),或者在代码未写完的部分(比如newhour = hours ...后面的逻辑)里,同样犯了类似的错误——比如引用了某个函数而非它的返回值。
修复你的代码逻辑
另外,你自己手动处理时分进位的方式容易出问题(比如小时超过24、跨天的情况),这里给你两种实用方案:
方案1:修复原有逻辑,补全进位处理
import time # 获取当前时分的正确方式(确保函数调用正确) current_time = time.strftime('%H:%M') hours = int(current_time.split(':')[0]) minutes = int(current_time.split(':')[1]) def calculate_future_time(add_minutes): total_minutes = hours * 60 + minutes + add_minutes new_hours = (total_minutes // 60) % 24 # 处理超过24小时的循环 new_minutes = total_minutes % 60 return f"{new_hours:02d}:{new_minutes:02d}" # 示例:输入要添加的分钟数 add_min = int(input("请输入要添加的分钟数:")) print(f"当前时间:{current_time}") print(f"未来时间:{calculate_future_time(add_min)}")
方案2:用更专业的datetime模块(推荐)
手动处理时分进位容易出错,用datetime可以轻松解决所有时间计算问题,包括跨天、跨月等复杂场景:
from datetime import datetime, timedelta # 获取当前时间 current_time = datetime.now().strftime('%H:%M') current_datetime = datetime.now() # 输入要添加的分钟数 add_min = int(input("请输入要添加的分钟数:")) # 计算未来时间 future_datetime = current_datetime + timedelta(minutes=add_min) future_time = future_datetime.strftime('%H:%M') print(f"当前时间:{current_time}") print(f"未来时间:{future_time}")
这个方案不需要你手动处理进位逻辑,Python会帮你搞定一切细节。
内容的提问来源于stack exchange,提问作者Barkat Guy
相关产品推荐
相关产品推荐

