Преобразование между временем чч:мм:сс и числом с плавающей запятой, которое составляет часть 24 часов

Я получаю время ввода (чч: мм: сс) как число с плавающей запятой - например. 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, но ничего не смог найти для этого)?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
105
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

У вас есть количество времени в дневных единицах

Вы можете использовать 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)

Большое спасибо - это было именно то, что я искал.

Rapid1898 28.11.2022 11:50

Я предполагаю, что значение с плавающей запятой - это время в днях.

Чтобы получить значение с плавающей запятой из времени, вы можете преобразовать каждое из них (часы, минуты, секунды) в дни и сложить их все.

Так что hours/24+minutes/60/24+seconds/60/60/24 будет работать.

Другие вопросы по теме