概述
python:timedelta 类对象
- Only days, seconds, and microseconds remain
- class:timedelta 用法示例
timedelta 对象表示两个 date 或者 time 的时间间隔。
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
所有参数都是可选的并且默认为 0。 这些参数可以是整数或者浮点数,也可以是正数或者负数。
只有 days, seconds 和 microseconds 会存储在内部。 参数单位的换算规则如下:
1毫秒会转换成1000微秒。
1分钟会转换成60秒。
1小时会转换成3600秒。
1星期会转换成7天。
日期、秒、微秒都是标准化的,所以它们的表达方式也是唯一的,例:
0 <= microseconds < 1000000
0 <= seconds < 3600*24 (一天的秒数)
-999999999 <= days <= 999999999
下面的例子演示了如何对 days, seconds 和 microseconds 以外的任意参数执行“合并”操作并标准化为以上三个结果属性:
from datetime import timedelta
delta = timedelta(
days=50,
seconds=27,
microseconds=10,
milliseconds=29000,
minutes=5,
hours=8,
weeks=2
)
Only days, seconds, and microseconds remain
delta
datetime.timedelta(days=64, seconds=29156, microseconds=10)
在有任何参数为浮点型并且 microseconds 值为小数的情况下,从所有参数中余下的微秒数将被合并,并使用四舍五入偶不入奇的规则将总计值舍入到最接近的整数微秒值。 如果没有任何参数为浮点型的情况下,则转换和标准化过程将是完全精确的(不会丢失信息)。
如果标准化后的 days 数值超过了指定范围,将会抛出 OverflowError 异常。
请注意对负数值进行标准化的结果可能会令人感到惊讶。 例如:
>>>
from datetime import timedelta
d = timedelta(microseconds=-1)
(d.days, d.seconds, d.microseconds)
(-1, 86399, 999999)
类属性:
timedelta.min
The most negative timedelta object, timedelta(-999999999).
timedelta.max
The most positive timedelta object, timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999).
timedelta.resolution
两个不相等的 timedelta 类对象最小的间隔为 timedelta(microseconds=1)。
需要注意的是,因为标准化的缘故,timedelta.max > -timedelta.min,-timedelta.max 不可以表示一个 timedelta 类对象。
实例属性(只读):
支持的运算:
注释:
结果正确,但可能会溢出。
结果正确,不会溢出。
除以0将会抛出异常 ZeroDivisionError 。
-timedelta.max 不是一个 timedelta 类对象。
timedelta 对象的字符串表示形式类似于其内部表示形式被规范化。对于负时间增量,这会导致一些不寻常的结果。例如:
>>>
timedelta(hours=-5)
datetime.timedelta(days=-1, seconds=68400)
print(_)
-1 day, 19:00:00
表达式 t2 - t3 通常与 t2 + (-t3) 是等价的,除非 t3 等于 timedelta.max; 在这种情况下前者会返回结果,而后者则会溢出。
除了上面列举的操作以外,timedelta 对象还支持与 date 和 datetime 对象进行特定的相加和相减运算(见下文)。
在 3.2 版更改: 现在已支持 timedelta 对象与另一个 timedelta 对象相整除或相除,包括求余运算和 divmod() 函数。 现在也支持 timedelta 对象加上或乘以一个 float 对象。
支持 timedelta 对象之间进行比较,但其中有一些注意事项。
== 或 != 比较 总是 返回一个 bool 对象,无论被比较的对象是什么类型:
>>>
from datetime import timedelta
delta1 = timedelta(seconds=57)
delta2 = timedelta(hours=25, seconds=2)
delta2 != delta1
True
delta2 == 5
False
对于所有其他比较 (例如 < 和 >),当一个 timedelta 对象与其他类型的对象比较时,将引发 TypeError:
>>>
delta2 > delta1
True
delta2 > 5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int'
在布尔运算中,timedelta 对象当且仅当其不等于 timedelta(0) 时则会被视为真值。
实例方法:
timedelta.total_seconds()
返回期间占用了多少秒。等价于 td / timedelta(seconds=1)。对于秒以外的间隔单位,直接使用除法形式 (例如 td / timedelta(microseconds=1))。
需要注意的是,时间间隔较大时,这个方法的结果中的微秒将会失真(大多数平台上大于270年视为一个较大的时间间隔)。
3.2 新版功能.
class:timedelta 用法示例
一个标准化的附加示例:
>>>
# Components of another_year add up to exactly 365 days
from datetime import timedelta
year = timedelta(days=365)
another_year = timedelta(weeks=40, days=84, hours=23,
minutes=50, seconds=600)
year == another_year
True
year.total_seconds()
31536000.0
timedelta 算术运算的示例:
>>>
from datetime import timedelta
year = timedelta(days=365)
ten_years = 10 * year
ten_years
datetime.timedelta(days=3650)
ten_years.days // 365
10
nine_years = ten_years - year
nine_years
datetime.timedelta(days=3285)
three_years = nine_years // 3
three_years, three_years.days // 365
(datetime.timedelta(days=1095), 3)
最后
以上就是心灵美烧鹅为你收集整理的python:timedelta 类对象Only days, seconds, and microseconds remainclass:timedelta 用法示例的全部内容,希望文章能够帮你解决python:timedelta 类对象Only days, seconds, and microseconds remainclass:timedelta 用法示例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复