AttributeError: 'datetime.timedelta' object has no attribute 'strftime'

AttributeError: 'datetime.timedelta' object has no attribute 'strftime'

我正在自学如何在 Python 中编码。

我正在尝试编写一个“计算器”,计算我需要工作多少 hours/days 才能购买产品。我收到此错误,但不知道如何解决:

  File "D:\---\---\---\code.py", line 21, in <module>
    print("Para comprar um produto de " + str(preco) + " tem de trabalhar durante " + str(resultado.strftime("%d dias, %H horas e %M minutos.")))
AttributeError: 'datetime.timedelta' object has no attribute 'strftime'

完整代码如下:

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

print("Para comprar um produto de " + str(preco) + " tem de trabalhar durante " + str(resultado.strftime("%d dias, %H horas e %M minutos.")))

有人可以帮我解决这个问题吗?谢谢:)

您可以从 timedelta 和秒中获取 .days 值。与其他日期时间对象不同,使用 .hour 不起作用。然后对秒进行数学运算以获得小时和分钟。如果这样更容易,您也可以将其转换为字符串。

preco = 1000
salario = 6
divisão = preco / salario
resultado = datetime.timedelta(hours=divisão)  # 6 days, 22:40:00
print(str(resultado))
# 6 days, 22:40:00

days = resultado.days
seconds = resultado.seconds

hours = seconds//3600
minutes = (seconds//60) % 60

print(str(days), 'dias', str(hours), 'horas e', str(minutes), 'minutos.')
# 6 dias 22 horas e 40 minutos.