Django:如何将"1 day, 1:00:09"转换为"HH:MM:SS"格式
秒数转HH:MM:SS格式的解决方法
你遇到的问题是因为gmtime会把超过24小时的秒数拆分为“天数+当日小时”,而strftime('%H')只能提取当日的小时(0-23),所以结果会带天数。下面是几种能得到累计小时数的HH:MM:SS格式的方法:
方法1:手动计算时分秒
直接通过数学运算拆分总秒数,自己控制小时的累计计算:
seconds = 86409 # 示例:1天1小时9秒 hours = seconds // 3600 remaining = seconds % 3600 minutes = remaining // 60 secs = remaining % 60 result = f"{hours:02d}:{minutes:02d}:{secs:02d}" # 输出:25:00:09
02d用来确保数字不足两位时自动补零,比如1小时会显示为01。
方法2:利用datetime.timedelta
借助timedelta处理时间差,再提取累计小时数:
from datetime import timedelta seconds = 86409 td = timedelta(seconds=seconds) total_hours = td.days * 24 + td.seconds // 3600 minutes = (td.seconds // 60) % 60 secs = td.seconds % 60 result = f"{total_hours:02d}:{minutes:02d}:{secs:02d}" # 输出:25:00:09
方法3:基于原代码改造
从gmtime返回的结构体中提取天数,转成小时后和当日小时相加:
import time seconds = 86409 struct_t = time.gmtime(seconds) total_hours = (struct_t.tm_mday - 1) * 24 + struct_t.tm_hour result = f"{total_hours:02d}:{struct_t.tm_min:02d}:{struct_t.tm_sec:02d}" # 输出:25:00:09
这里tm_mday是从1开始的天数,所以要减1再转成小时。
内容的提问来源于stack exchange,提问作者user15361826
相关产品推荐
相关产品推荐

