You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何将datetime时间差(delta)转换为包含天数的总秒数

解决datetime时间差转总秒数忽略天数的问题

这是个很典型的小误区!你遇到的问题根源在于timedelta.seconds这个属性的设计——它只返回时间差里“当天剩余部分”的秒数(范围是0到86399),不会自动把前面的天数转换成秒累加进去。所以当你的时间差包含完整天数时,用它就会漏掉这部分的秒数。

正确的解决方案:使用total_seconds()方法

Python的timedelta对象自带了一个total_seconds()方法,它会把时间差的所有组成部分(天数、秒数、微秒数)全部转换成总秒数,完全符合你的需求。

修改你的代码很简单,只需要把最后一行的.seconds换成.total_seconds()(另外别忘了导入datetime模块,你的代码里可能漏了这行):

from datetime import datetime

oldtimefile = open('oldtime.txt', 'r+')
oldtme = oldtimefile.read()
datetimeobj = datetime.strptime(oldtme, "%Y-%m-%d %H:%M:%S.%f")
finaltime = datetime.now() - datetimeobj
print(finaltime.total_seconds())  # 这里改成total_seconds()

验证一下结果

比如你提到的时间差1 day, 22:13:30.231916:

  • 1天 = 86400秒
  • 22小时13分30.231916秒 = 223600 +1360 +30.231916 = 80010.231916秒
  • 总秒数就是86400 + 80010.231916 = 166410.231916秒,这正是total_seconds()会返回的结果。

如果需要整数秒的话,可以用类型转换或者取整:

print(int(finaltime.total_seconds()))  # 直接截断小数部分
print(round(finaltime.total_seconds()))  # 四舍五入到最近整数

内容的提问来源于stack exchange,提问作者Randorile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:22:42