@sXfTeR

Кол-во пройденных дней, часов, минут и секунд?

Есть функция которая выводит кол-во дней и часов назад после регистрации пользователя

now = datetime.datetime.now(pytz.timezone('Europe/Moscow')).strftime("%d.%m.%Y %H:%M:%S")
diff = datetime.datetime.strptime(now, "%d.%m.%Y %H:%M:%S") - datetime.datetime.strptime(user.reg_date, "%d.%m.%Y %H:%M:%S") # user - переменная получающая данные пользователя из бд
if diff.days > 0: # если больше 0 отображает только дни
   diff = f'{plural_days(int(diff.days))} назад' # plural_days - функция склонений дней
elif diff.days == 0: # если равняется 0 отображает только часы
   diff = f'{plural_hours(int(diff.seconds / 3600))} назад' # plural_hours - функция склонений часов


Как выводить минуты и секунды так же ?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
import datetime
past = datetime.datetime(2022,11,25,16,55,32)
now = datetime.datetime.now()
mappings = {'Дней: ':60*60*24, 'Часов: ':60*60, 'Минут: ': 60,'Секунд: ':1}
diff_in_seconds = int((now - past).total_seconds())
result = ''
for key, value in mappings.items():
    result += key + str(diff_in_seconds // value) + ', '
    diff_in_seconds %= value
print(f'Разница между {past} и {now} состовляет {result}')

Для примера я взял дату несколько дней назад и дату момента запуска скрипта, и вывел полную разницу, дальше подгоните под свои нужды и все.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Если в числах, то часы, минуты, секунды можно вычислить так:
hh = diff.seconds // 3600
mi = (diff.seconds % 3600)//60
sec = (diff.seconds % 3600)%60
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы