我必须在这里做错事,有什么想法吗?
>>> (datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,16)).seconds
2098
它应该超过那么多秒。
答案 0 :(得分:10)
timedelta.seconds
为您提供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
答案 1 :(得分:2)
实际上它返回的是一个具有日期字段的timedelta,即
c.seconds = 2098
但是
c.days = 1
答案 2 :(得分:2)
我不知道还有total_seconds例子。 它适用于python2和python3。这是获得timedelta总秒数的最简单方法。
在你的情况下
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
答案 3 :(得分:1)
timedelta.seconds
不是总秒数,它是在计算天数后的余数(以秒为单位)。使用您的示例:
>>> import datetime
>>> (datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,16))
datetime.timedelta(1, 2098)
datetime.timedelta(1, 2098)
表示您的timedelta 1天,加 2098秒。
你想要的是:
>>> delta = (datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,16))
>>> (delta.days * 86400) + delta.seconds
88498
答案 4 :(得分:1)
datetime.datetime(2008,11,7,10,5,14)-datetime.datetime(2008,11,6,9,30,16)
返回datetime.timedelta
个对象,该对象具有days
属性。您计算的差异实际上是1天和2098秒。