我正在自学如何用 Python 编码。
我正在尝试编写一个“计算器”来计算我需要工作多少小时/天才能购买产品。我收到此错误,但不知道如何修复它:
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.
如果你想格式化 YYYY:MM:DD:HH:MM:SS 那么这个代码只需复制粘贴
def format_timedelta(td): # 计算组件 天数=abs(td.天数) 分钟、秒 = divmod(td.seconds, 60) 小时,余数 = divmod(分钟, 60)
# Calculate years and months
years, days_in_year = divmod(days, 365)
months, days_in_month = divmod(days_in_year, 30)
# Create the formatted string
formatted_string = (
"{year:02d}:{month:02d}:{day:02d}:{hour:02d}:{min:02d}:{sec:02d}".format(
year=abs(int(years)),
month=int(months),
day=int(days_in_year),
hour=int(hours),
min=int(remainder),
sec=int(seconds),
)
)
return formatted_string