2017-03-08 19 views
3

有人能告訴我python如何在兩個日期之間顯示1310秒的差異?Python中的奇數日期時間差異

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 
+4

這不是'totalseconds' –

+2

只需要幾秒鐘的時間部分:21分鐘和50秒= 1310.要獲得87710,請使用'timediff.total_seconds()'作爲@WillemVanOnsem提示。 –

回答

6

正如你可以閱讀here一個timedelta對象有三個字段:days; seconds;和microseconds。或如該文件中規定:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

(...)

僅幾天,秒和毫秒的內部存儲。參數轉換爲這些單位:

  • 毫秒轉換爲1000微秒。
  • 一分鐘轉換爲60秒。
  • 一小時轉換爲3600秒。
  • 一週轉換爲7天。

(格式化加入)

Althout構造是timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)並因此提供途徑進入小時,它因此minuteshours等所有轉換爲秒。構造函數看起來像:

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返回秒的總金額:

>>> 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 

so 21 minutes and 50 seconds