'datetime.timedelta' object has no attribute 'strftime'
Есть такой код на проверку комментариев.
if user.last_comment <= datetime.now():
user.balance += 4
user.last_comment = datetime.now() + timedelta(hours=3)
user.save()
await user.reply(f'{user.mention()}, награда за коментарий +4 <3.', only_user=True)
else:
time = datetime.now() - user.last_comment
await user.reply(f'{user.mention()}, вы уже оставляли коментарий! Попробуйте через {time.strftime("%H:%M:%S")}', only_user=True)
При написании комментария бот крашится и пишет в консоль
'datetime.timedelta' object has no attribute 'strftime'
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Объект timedelta, который представляет собой, в частности, разность двух дат, не имеет метода strftime. Поэтому вывести его можно в виде стандартного строкового представления str(time) >> 7:08:59.760949 (с микросекундами) либо отформатировать самостоятельно. Три варианта ниже.
import datetime
time = int((datetime.datetime.now() - datetime.datetime(2023, 3, 9, 12, 15, 18)).total_seconds())
print(f'вы уже оставляли комментарий {time // 3600}:{time // 60 % 60:02d}:{time % 60:02d} назад')
time = datetime.datetime.now() - datetime.datetime(2023, 3, 9, 12, 15, 18)
print(f'вы уже оставляли комментарий {str(time).split(".")[0]} назад')
time = datetime.datetime.now() - datetime.datetime(2023, 3, 9, 12, 15, 18)
print(f'вы уже оставляли комментарий {datetime.timedelta(seconds=int(time.total_seconds()))} назад')
вы уже оставляли комментарий 7:05:56 назад
вы уже оставляли комментарий 7:05:56 назад
вы уже оставляли комментарий 7:05:56 назад