如何获取timedelta的天数数值而非格式化输出?
获取timedelta的精确天数数值
嘿,这个需求我之前也碰到过!你现在遇到的问题是,直接打印timedelta对象时,它会输出格式化的字符串(比如7 days, 5:31:12),但我们需要的是包含小数的原始天数数值。
原因很简单:timedelta的days属性只会返回整数部分,而直接打印对象时会把剩余的时间拆成小时、分钟、秒来展示。要拿到精确的7.23,我们可以利用timedelta的total_seconds()方法来计算:
步骤很直观:
- 先用
total_seconds()获取时间差的总秒数 - 再除以一天的总秒数(
24 * 3600),就能还原出包含小数的精确天数
修改后的代码示例:
import datetime now = datetime.datetime.now() com_day = now + datetime.timedelta(days=7.23) delta_days = com_day - now # 计算精确的天数 exact_days = delta_days.total_seconds() / (24 * 3600) print(exact_days) # 输出接近7.23的数值(可能因datetime精度有微小误差)
另外补充个小细节:因为datetime的精度限制,有时候会得到类似7.229999999999999这样的结果,如果需要严格保留两位小数,可以用round()处理:
print(round(exact_days, 2)) # 输出7.23
这样就能完美得到你想要的精确天数数值啦!
内容的提问来源于stack exchange,提问作者sof-03
相关产品推荐
相关产品推荐

