Python日期时间相减 - 结果错误?

3 投票
5 回答
3607 浏览
提问于 2025-04-15 15:06

我这儿肯定做错了什么,有什么想法吗?

>>> (datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,16)).seconds
2098

应该得到的时间比这多。

5 个回答

2

我想知道为什么还没有关于total_seconds的例子。这个方法在python2和python3中都能用。而且这是获取时间差总秒数的最简单方法。

在你的情况下

In [5]: (datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,1
   ...: 6)).seconds
Out[5]: 2098

In [6]: (datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,1
   ...: 6)).total_seconds()
Out[6]: 88498.0

另一个例子:

In [1]: from datetime import datetime
In [2]: d1 = datetime(2018,1,1)
In [3]: d2 = datetime(2018,1,3)
In [4]: td = d2 - d1
In [5]: td.seconds
Out[5]: 0
In [6]: td.days
Out[6]: 2
In [7]: td.total_seconds()
Out[7]: 172800.0
2

其实它返回的是一个时间差对象,这个对象里面有天数的字段,也就是说:

c.seconds = 2098

但是

c.days = 1

11

timedelta.seconds 可以让你获取到时间差中的 秒数。不过,它还有一个 days 字段(还有一个 milliseconds 字段)。

所以你可能想要一些类似于

delta = datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,16)
delta.seconds + delta.days*86400

撰写回答