有人能告訴我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
有人能告訴我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
正如你可以閱讀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)
並因此提供途徑進入小時,它因此minutes
,hours
等所有轉換爲秒。構造函數看起來像:
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
這不是'totalseconds' –
只需要幾秒鐘的時間部分:21分鐘和50秒= 1310.要獲得87710,請使用'timediff.total_seconds()'作爲@WillemVanOnsem提示。 –