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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。