當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Datetime Timedelta構造函數用法及代碼示例


timedelta 對象表示兩個 datetimedatetime 對象之間的差異。

timedelta 類的構造函數采用以下形式:

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

所有參數都是可選的,默認為 0。

對於 timedelta 對象,內部僅存儲天、秒和微秒。所有參數都轉換為這些單位:

單元

儲值

1毫秒

1000微秒

1分鍾

60秒

1小時

3600秒

1周

7天

例子

timedelta 對象的內部存儲

from datetime import timedelta
delta = timedelta(
 days=33,
 seconds=16,
 microseconds=11,
 milliseconds=34000,
 minutes=3,
 hours=2,
 weeks=3
)
# Only days, seconds, and microseconds are stored
delta



datetime.timedelta(days=61, seconds=7430, microseconds=11)

請注意,天、秒和微秒根據以下條件進行標準化,以便表示是唯一的:

歸一化條件

0 <= 微秒 < 1000000

0 <= 秒 < 3600*24(一天中的秒數)

-999999999 <= 天 <= 999999999

溢出錯誤

當天數的標準化值超出上述範圍時,就會發生OverflowError

from datetime import timedelta
delta = timedelta(
 days=999999,
 seconds=16,
 microseconds=11,
 milliseconds=34000,
 minutes=3,
 hours=2,
 weeks=9000000000
)
delta



OverflowError: normalized days too large to fit in a C int

使用 timedelta 對象進行比較

無論比較對象的類型如何,比較 ==!= 始終返回 bool

from datetime import timedelta
delta1 = timedelta(seconds=52)
delta2 = timedelta(hours=15, seconds=5)
print(delta2 != delta1)
print(delta2 == 3)



True
False

對於所有其他比較(例如 < 和 >),當 timedelta 對象與不同類型的對象進行比較時,會引發 TypeError

print(delta2 > delta1)
print(delta2 > 3)



True
TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int'

計算兩個給定日期之間的天數/分鍾數

通過將一個 datetime 對象與另一個對象相減,您將獲得一個 timedelta 對象,表示兩個 datetime 對象之間的差異:

from datetime import datetime 
d0 = datetime(2019, 2, 18, 12,1,1)
d1 = datetime(2020, 10, 26,14,2,2)
delta = d1 - d0
print('Days Difference =', delta.days)
delta_hours = delta.seconds/  /3600
print('and Hours Difference =', delta_hours)



Days Difference = 616
and Hours Difference = 2

因此我們知道,d0d1 這兩個datetime 對象之間存在616 天和2 小時的差異。

注意

請記住示例 1 中的 timedelta 對象(在本例中為 delta )僅在內部存儲天、秒和微秒。因此,要檢索其他時間單位(例如小時),我們必須通過將秒除以 3600(每分鍾 60 秒 * 每小時 60 分鍾)來得出該時間單位。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Python Datetime | Timedelta constructor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。