我试图将十进制时间数字(例如23.456,0.5555,1.9999等)转换为秒(作为整数)。
我已经创建了一个将小数时间转换为小时和分钟的函数。 例如,转换为小时:
def decimal_to_hours(t)
return math.floor(t)
然后是小数时间到分钟:
def decimal_to_mins(t)
if t < 1:
return math.floor(t * 60)
if t % 1 == 0:
return 0
elif t > 1:
return math.floor((t - math.floor(t)) * 60)
所以我的问题是我不知道如何将分数转换为秒。任何帮助都会被贬低。
答案 0 :(得分:3)
只需转换为秒并执行原始操作:floored modulo。
from math import floor
time_hours = 23.99431
time_minutes = time_hours * 60
time_seconds = time_minutes * 60
hours_part = floor(time_hours)
minutes_part = floor(time_minutes % 60)
seconds_part = floor(time_seconds % 60)
print("{h}:{m}:{s}".format(h=hours_part, m=minutes_part, s=seconds_part))
#>>> 23:59:39
答案 1 :(得分:2)
def convert_decimal_to_time(decimal):
values_in_seconds = [('days', 60*60*24), ('hours', 60*60), ('minutes', 60), ('seconds', 1)]
output_dict = {}
num_seconds = int(decimal * 3600)
for unit, worth in values_in_seconds:
output_dict[unit] = num_seconds // worth
num_seconds = num_seconds % worth
return output_dict
convert_decimal_to_time(23.99431)
# {'minutes': 59, 'hours': 23, 'days': 0, 'seconds': 39}
convert_decimal_to_time(2.75)
# {'minutes': 45, 'seconds': 0, 'hours': 2, 'days': 0}
convert_decimal_to_time(252.5)
# {'minutes': 30, 'seconds': 0, 'hours': 12, 'days': 10}