Python timedelta seconds vs total_seconds

tor*_*nge 7 python datetime

查看日期时间文档,我似乎无法区分timedelta对象上使用的属性seconds和方法total_seconds().它只是精确吗?从前者开始,int和后者是浮点数吗?或者我错过了什么?

Joh*_*nck 13

seconds是一天内的秒数,即[0,86399]. total_seconds是整个timedelta转换为秒,可以是任何值,例如604800.0一周,或0.1 100毫秒.

  • 我现在看到文档说秒是“0 到 86399 之间(含)”,即一天中的秒数。因此,对于小于一天的时间增量,假设您不使用毫秒分辨率,那么秒数和total_seconds将是相同的。仍然不明白为什么秒属性不能是该时间增量中的总秒数。遗留的东西? (3认同)

Tho*_*ler 5

您可以timedelta从天、秒、微秒、毫秒、分钟、小时和周构建一个。请注意这些参数的顺序,这绝对没有用,可能是历史造成的。

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

import datetime

t = datetime.timedelta(hours=2, minutes=30)
print(t.seconds)
Run Code Online (Sandbox Code Playgroud)

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

import datetime

t = datetime.timedelta(hours=24, minutes=1)
print(t.seconds)
print(t.days)
Run Code Online (Sandbox Code Playgroud)

因此,这timespan.seconds是一个非常无用的属性,因为它只是真相的一部分,没有其他两个组成部分就毫无意义。这同样适用于timespan.daystimespan.microseconds。它们真的应该是内部的,从而遵守信息隐藏的原则。

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