Python - datetime. Как в отображении timedelta убрать миллисекунды
Пишу игру. И немного запутался в формулах подсчёта времени с использованием datetime и timedelta. А точнее с выводом на экран. Скрипт все хорошо считает, с учетом бонуса от дополнительного навыка. Но, хочу убрать отображение миллисекунд.
working_hours = int(input 'Введите кол-во часов')
char_characteristic['working_end'] = datetime.fromtimestamp(datetime.now().timestamp()) + (timedelta(minutes=working_hours * 60) - ((timedelta(minutes=working_hours * 60) / 100) * char_characteristic['speed_skill']))
work_end_time = char_characteristic["working_end"] - datetime.fromtimestamp(datetime.now().timestamp())
print(work_ent_time)
Отображается в виде: 0:25:29.358868.
Хочу сделать, чтобы отображалось 0:25:29.
Пробовал разные варианты: strptime, strftime, просто, через str().
Подскажите, пожалуйста как поправить код, а то уже несколько дней пытаюсь с этим разобраться, и не получается.
Ответы (1 шт):
У класса timedelta() действительно нет встроенных удобных методов для того, чтобы убрать миллисекунды, но есть простое решение, которое я нашел на англоязычной версии вопроса:
Так как вам это нужно только для печати - можно воспользоваться тем, что у timedelta формат всегда одинаков и не выводить последнюю часть, предварительно отделив ее.
HH:MM:SS.FFF
^^^^
Код выглядит так:
from datetime import timedelta
delta = timedelta(days=1, hours=3, minutes=42, seconds=54, microseconds=24)
print(delta)
print(str(delta).split('.')[0])
Вывод:
1 day, 3:42:54.000024 1 day, 3:42:54