I'm self-learning how to code in Python.
I'm trying to code a "Calculator" that calculates how many hours/days I need to work to buy a product. I got this error and don't know how to fix it:
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'
Here is the entire code:
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.")))
Can someone help me fix this? Thanks :)
You can get the .days
value from the timedelta
, and the seconds. Unlike other datetime
objects, using .hour doesn't work. Then do math on the seconds to get hours and minutes. You can also just convert it to string if that's easier.
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.