当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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