timedelta
對象表示兩個 date
、 time
或 datetime
對象之間的差異。
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
因此我們知道,d0
和d1
這兩個datetime
對象之間存在616
天和2
小時的差異。
注意
請記住示例 1 中的 timedelta 對象(在本例中為 delta
)僅在內部存儲天、秒和微秒。因此,要檢索其他時間單位(例如小時),我們必須通過將秒除以 3600(每分鍾 60 秒 * 每小時 60 分鍾)來得出該時間單位。
相關用法
- Python Datetime Time構造函數用法及代碼示例
- Python Datetime today方法用法及代碼示例
- Python Datetime utcnow方法用法及代碼示例
- Python Datetime fromisoformat方法用法及代碼示例
- Python Datetime Date構造函數用法及代碼示例
- Python Datetime strftime方法用法及代碼示例
- Python Datetime strptime方法用法及代碼示例
- Python Datetime utcfromtimestamp方法用法及代碼示例
- Python Datetime now方法用法及代碼示例
- Python Datetime fromtimestamp方法用法及代碼示例
- Python Datetime Datetime構造函數用法及代碼示例
- Python Datetime.replace()用法及代碼示例
- Python Pandas DatetimeIndex構造函數用法及代碼示例
- Python Django DateDetailView用法及代碼示例
- Python DateTime轉integer用法及代碼示例
- Python DateTime astimezone()用法及代碼示例
- Python Django DateTimeField.input_formats用法及代碼示例
- Python DateTime weekday()用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Django DataSource用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Python Datetime | Timedelta constructor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。