Python中datetime.timedelta调用strftime报AttributeError如何修复
错误原因
datetime.timedelta 类型的对象本身没有 strftime 方法,该方法仅属于 datetime.datetime 类,直接对时间差对象调用该方法会触发属性不存在的报错。
修复方法
手动从 timedelta 对象中提取天数、小时、分钟字段即可,具体换算逻辑如下:
- 直接读取
.days属性获取完整天数 - 剩余时长通过
.seconds属性(总剩余秒数)换算:- 小时数 = 总秒数 // 3600
- 分钟数 = (总秒数 % 3600) // 60
修正后完整代码
import datetime while True: questao = input("Quer calcular em horas ou em dias?\nH ou D: ") if questao == "H": salario = float(input("\nQuanto ganha por hora? ")) preco = float(input("Quanto custa o produto? ")) divisão = preco/salario resultado = datetime.timedelta(hours=divisão) break elif questao == "D": salario = float(input("\nQuanto ganha por dia? ")) preco = float(input("Quanto custa o produto? ")) divisão = preco/salario resultado = datetime.timedelta(days=divisão) break else: print("Inseriu algo que não existe, tente novamente!\n") continue # 新增字段提取逻辑 dias = resultado.days horas = resultado.seconds // 3600 minutos = (resultado.seconds % 3600) // 60 print(f"Para comprar um produto de {preco} tem de trabalhar durante {dias} dias, {horas} horas e {minutos} minutos.")
内容的提问来源于stack exchange,提问作者tomasspvarela
相关产品推荐
相关产品推荐

