hh:mm:ss时间与24小时占比浮点数的双向转换方法咨询
hh:mm:ss与24小时占比浮点数的双向转换方法
一、从hh:mm:ss转换为24小时占比浮点数
核心逻辑是计算该时间的总秒数占一天总秒数(86400秒)的比例,代码实现如下:
time_str = "18:52:18" h, m, s = map(int, time_str.split(":")) total_seconds = h * 3600 + m * 60 + s float_val = total_seconds / 86400 print(float_val) # 输出0.786331018518518,与给定值匹配
二、借助datetime模块简化双向转换
1. 浮点数转hh:mm:ss
利用timedelta计算对应时长,结合datetime格式化输出:
from datetime import datetime, timedelta val = 0.786331018518518 delta = timedelta(days=val) time_obj = datetime.min + delta print(time_obj.strftime("%H:%M:%S")) # 输出18:52:18
2. hh:mm:ss转浮点数
将时间字符串转为datetime对象,计算其与当天零点的时间差占一天的比例:
from datetime import datetime time_str = "18:52:18" time_obj = datetime.strptime(time_str, "%H:%M:%S") delta = time_obj - datetime(time_obj.year, time_obj.month, time_obj.day) float_val = delta.total_seconds() / 86400 print(float_val) # 输出0.786331018518518
三、原浮点数转时间方法的简化优化
用divmod函数简化分步计算逻辑:
val = 0.786331018518518 total_hours = val * 24 hour, rem = divmod(total_hours, 1) minute, rem = divmod(rem * 60, 1) seconds = int(rem * 60) print(f"{int(hour)}:{int(minute)}:{seconds}") # 输出18:52:18
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

