Я получаю время ввода (чч: мм: сс) как число с плавающей запятой - например. 18:52:18 — число с плавающей запятой 0,786331018518518.
Мне удалось вычислить время из значения с плавающей запятой с помощью этого кода:
val = 0.786331018518518
hour = int(val*24)
minute = int((val*24-hour)*60)
seconds = int(((val*24-hour)*60-minute)*60)
print(f"{hour}:{minute}:{seconds}")
Как можно вычислить значение с плавающей запятой по времени, то есть с 18:52:18 до 0,786331018518518?
И вообще, нет ли более простого способа конвертировать в обоих направлениях между float и time (я думал о модуле datetime, но ничего не смог найти для этого)?
У вас есть количество времени в дневных единицах
Вы можете использовать datetime.timedelta
, который представляет продолжительность
val = 0.786331018518518
d = timedelta(days=val)
print(d) # 18:52:19
val = d.total_seconds() / 86400
print(val) # 0.7863310185185185
Из ваших переменных час/минута/секунды это будет
print(hour / 24 + minute / 1440 + seconds / 86400)
Я предполагаю, что значение с плавающей запятой - это время в днях.
Чтобы получить значение с плавающей запятой из времени, вы можете преобразовать каждое из них (часы, минуты, секунды) в дни и сложить их все.
Так что hours/24+minutes/60/24+seconds/60/60/24
будет работать.
Большое спасибо - это было именно то, что я искал.