Python:基于时间戳计算满值前的进度及百分比实现
基于时间戳计算满值进度的实现方案
要实现基于时间戳计算当前能量值及占满值的百分比,核心逻辑是线性比例计算:假设能量从0开始匀速增长,在time_end时刻达到max_energy,当前时间time_now的进度由已消耗的充能时长占总充能时长的比例决定。
完善后的代码
from datetime import datetime def full_energy(): time_now = 1666650096 # 当前时间戳(会实时更新) time_end = 1666679529 # 能量充满的目标时间戳 max_energy = 50 time_start = 1666620663 # 充能起始时间戳(能量为0的时刻,需替换为真实值) # 计算总充能时长与已充能时长(秒) total_duration = (datetime.utcfromtimestamp(time_end) - datetime.utcfromtimestamp(time_start)).total_seconds() elapsed_duration = (datetime.utcfromtimestamp(time_now) - datetime.utcfromtimestamp(time_start)).total_seconds() # 处理边界情况:避免除以0,或当前已充满 if total_duration <= 0 or elapsed_duration >= total_duration: current_energy = max_energy progress_percent = 100.0 else: # 计算进度比例 progress_ratio = elapsed_duration / total_duration current_energy = round(max_energy * progress_ratio) # 能量取整 progress_percent = round(progress_ratio * 100, 1) # 百分比保留一位小数 # 按要求格式输出 print(f"{current_energy}/{max_energy} ({progress_percent}%)") full_energy()
关键逻辑说明
- 时间差计算:通过
datetime.utcfromtimestamp将时间戳转换为UTC时间对象,计算总充能时长(从time_start到time_end)和已充能时长(从time_start到time_now)。 - 进度比例:用已充能时长除以总充能时长得到进度比例,再分别计算当前能量值和百分比。
- 边界处理:当总时长为0或已超过充能结束时间时,直接返回满值和100%进度。
注意事项
time_start是充能开始的时间戳(能量为0的时刻),需要根据实际场景替换为真实值,示例中该值是根据输出反推的中间点时间。- 如果能量恢复不是从0开始,只需调整
time_start为对应起始能量的时间点,或修改计算逻辑为(当前能量 + 增长速率 * 已过去时间)。
内容的提问来源于stack exchange,提问作者CuriousDev
相关产品推荐
相关产品推荐

