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

为何出现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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:01:46