python AttributeError:'datetime.timedelta'对象没有属性'strftime'

3df52oht  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(234)

我正在自学如何用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.")))


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

mpbci0fu

mpbci0fu1#

你可以从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.

字符串

li9yvcax

li9yvcax2#

如果你想格式化YYYY:MM:DD:HH:MM:SS,那么这段代码只是复制粘贴
def format_timedelta(td):#计算组件days = abs(td.days)minutes,seconds = divmod(td.seconds,60)hours,remainder = divmod(minutes,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

字符串

相关问题