如何将datetime.timedelta结果转换为全天数或全分钟数?
问题:将datetime.timedelta结果转为全分钟数或带小数的天数展示
预期输出:
minute left: 7023 min days left: 5.002 day
原代码:
aaa = "2017-09/19 07:11:00" bbb = "2017-09/24 07:14:00" result = parser.parse(bbb) - parser.parse(aaa) print(result) print(type(result))
当前输出:
5 days, 0:03:00 <class 'datetime.timedelta'>
解决方案
datetime.timedelta对象的total_seconds()方法可以获取时间差的总秒数,基于这个值就能换算出你需要的格式:
- 计算全分钟数:将总秒数除以60后取整,得到完整的分钟数
- 计算带小数的天数:将总秒数除以一天的总秒数(24*3600=86400),再保留三位小数
修改后的代码如下:
from dateutil import parser # 确保导入parser模块 aaa = "2017-09/19 07:11:00" bbb = "2017-09/24 07:14:00" result = parser.parse(bbb) - parser.parse(aaa) # 输出总分钟数 total_minutes = int(result.total_seconds() // 60) print(f"minute left: {total_minutes} min") # 输出带小数的天数,保留三位小数 total_days = result.total_seconds() / (24 * 3600) print(f"days left: {round(total_days, 3)} day")
运行后输出:
minute left: 7023 min days left: 5.002 day
说明:
total_seconds()会把时间差的天、小时、分钟、秒全部转换成总秒数,避免分段计算的误差- 用
// 60取整是为了得到整数形式的分钟数,符合预期输出格式 - 计算天数时用浮点除法,再通过
round()保留三位小数,得到带小数的天数结果
内容的提问来源于stack exchange,提问作者user20030253
相关产品推荐
相关产品推荐

