Python timedelta秒vs total_seconds

时间:2018-08-02 11:51:25

标签: python datetime

看日期时间docs,似乎似乎无法得到属性seconds和在timedelta对象上使用的方法total_seconds()之间的区别。只是精度?开始前者是 int ,而后者是 float ?还是我错过了什么?

2 个答案:

答案 0 :(得分:12)

seconds是一天中的秒数,以[0,86399]为单位。 total_seconds是转换为秒的整个时间增量,可以是任何值,例如604800.0(一周)或0.1(100毫秒)。

答案 1 :(得分:1)

您可以根据天,秒,微秒,毫秒,分钟,小时和周来构造timedelta。请注意这些参数的顺序,这绝对没有用,可能是历史原因造成的。

在内部,timedelta结构仅由天,秒和微秒组成。这些是timedelta建立后可以访问的属性。即使您使用小时,分钟等来构造对象,该信息也消失了。

import datetime

t = datetime.timedelta(hours=2, minutes=30)
print(t.seconds)

如果秒数大于86400(24 * 60 * 60),它们将溢出一天:

import datetime

t = datetime.timedelta(hours=24, minutes=1)
print(t.seconds)
print(t.days)

因此,timespan.seconds相当无用,因为它只是事实的一部分,没有其他两个组成部分就毫无意义。 timespan.daystimespan.microseconds也是如此。他们应该确实是内部人员,因此必须遵守信息隐藏的原则。

另一方面,

total_seconds()是时间跨度的有效表示。它将所有3个属性组合为一个数字。