Python中的奇数日期时间差

Python中的奇数日期时间差,python,datetime,Python,Datetime,有人能告诉我为什么python显示两个日期之间有1310秒的差异 import datetime time1=datetime.datetime(2016,12,8,20,5,0) time2=datetime.datetime(2016,12,7,19,43,10) timediff=time1-time2 print(timediff) print(timediff.seconds) >1 day, 0:21:50 >1310 正如您可以读取的那样,timedelta对象有三

有人能告诉我为什么python显示两个日期之间有1310秒的差异

import datetime
time1=datetime.datetime(2016,12,8,20,5,0)
time2=datetime.datetime(2016,12,7,19,43,10)
timediff=time1-time2
print(timediff)
print(timediff.seconds)

>1 day, 0:21:50
>1310
正如您可以读取的那样,
timedelta
对象有三个字段:
days
<代码>秒;和
微秒
。或按照文件中的规定:

类datetime.timedelta(天=0,秒=0,微秒=0,毫秒=0,分钟=0,小时=0,周=0)

(……)

内部只存储天、秒和微秒。参数转换为以下单位:

  • 一毫秒转换为1000微秒
  • 一分钟转换为60秒
  • 一小时转换为3600秒
  • 一周转换为7天
(已添加格式)

尽管构造函数是
timedelta(天=0,秒=0,微秒=0,毫秒=0,分钟=0,小时=0,周=0)
并因此提供了输入小时的方法,但它将
分钟
小时
等全部转换为秒。构造函数将如下所示:

def __init__(self, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0):
    self.microseconds = microseconds+1000*milliseconds
    self.seconds = seconds+60*minutes+3600*hours+self.microseconds//1000000
    self.microseconds %= 1000000
    self.days = days+7*weeks+self.seconds//86400
    self.seconds %= 86400
(但可能更高级一些,等等)

这意味着,
.seconds
实际上是模日,没有微秒

但是,您可以使用返回总秒数:

>>> timediff.total_seconds()
87710.0
因此,
total_seconds()
基本上是:

def total_seconds(self):
    return 86400.0*self.days+self.seconds+1e-6*self.microseconds
    #      ^ number of seconds in a day   ^
    #                                     | 1 micro is 1e-6
如果将
1310
除以
60
,您将看到它返回:

>>> 1310/60 # obtain number of minutes
21.833333333333332
>>> 1310%60 # obtain number of seconds  (without minutes)
50

所以21分50秒

不是
totalseconds
只是秒的“时间”部分:21分50秒=1310。要获得87710,请使用@WillemVanOnsem建议的
timediff.total_seconds()