подсчёт временного промежутка в часах, datetime
Всем добрый день! У меня проблема: мне нужно рассчитать временной промежуток в часах с помощью datetime. Грубо говоря: есть два объекта datetime.datetime, один из них datetime.datetime.now(). Мне нужно рассчитать временной промежуток в часах, то есть 2 дня и 2 часа - 50 часов
last = datetime.datetime(year=1921, month=2, day=21)
now = datetime.datetime.now()
strmin = str(now-last)
if "," in strmin:
time_ = strmin.split(" ")[2].split(".")[0]
else:
time_ = strmin.split(".")[0]
hour = int(time_.split(":")[0])
этот код в теории рабочий, но в пределах одних суток. Подскажите пожалуйста, есть ли какая-либо встроенная возможность без лишних усложнений* это сделать?
.*- без выделения в строку и split()
Ответы (2 шт):
from datetime import datetime
last = datetime(year=2024, month=6, day=28)
now = datetime.now()
delta = now - last
total_minutes = delta.total_seconds() // 60
hours = int(total_minutes // 60)
minutes = int(total_minutes % 60)
print(f"{hours}:{minutes:02d}")
Вывод:
46:01
[Program finished]
Решение с минимальным количеством усложнений:
def timedelta2hours(delta):
return delta.days * 24 + delta.seconds / 3600
print(timedelta2hours(now - last))
Функция возвращает абсолютное количество часов, без округления, при надобности округления вниз можно просто заменить обычное деление на целочисленное.
Думаю, такое решение максимально подоходит под вашу задачу.
UPD
Хочу добавить другое решение, которое вдохновлено коментарием к моему ответу:
def timedelta2hours(delta):
return delta.total_seconds() / 3600
print(timedelta2hours(now - last))