在启用了真正除法的日期时间模块中计算Python中的total_seconds

Cha*_*guy 9 python datetime

我正在尝试在日期做一些计算,我有一个timedelta对象,我想得到秒数.它似乎dt.total_seconds()完全符合我的需要,但不幸的是它是在Python 2.7中引入的,而且我坚持使用旧版本.

如果我阅读官方文档,它会说明以下内容:

返回持续时间中包含的总秒数.相当于(td.microseconds +(td.seconds + td.days*24*3600)*10**6)/ 10**6 使用真正的除法计算得出.

在查看datetime模块的源代码(在C中)后,我看到如下内容:

total_seconds = PyNumber_TrueDivide(total_microseconds, one_million);
Run Code Online (Sandbox Code Playgroud)

因此,虽然计算total_seconds()似乎微不足道,但这让我想知道这个真正的分裂究竟意味着什么.我找不到有关该主题的任何信息.如果我只使用常规划分会发生什么,为什么我们需要这个真正的划分呢?它做了什么?我可以用total_seconds()Python中的等效文档编写吗?

And*_*ark 10

真正的分裂,1 / 2会导致0.5.Python 2.x中的默认行为是使用整数除法,这1 / 2将导致0.以下是文档的解释:

普通或长整数除法产生相同类型的整数; 结果是数学除法的结果,"floor"函数应用于结果.

要在Python 2.2或更高版本上启用真正的除法(在Python 3.x中不是必需的),您可以使用以下命令:

from __future__ import division
Run Code Online (Sandbox Code Playgroud)

或者,您可以将其中一个参数设置为float以获得相同的行为:

(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10.0**6
Run Code Online (Sandbox Code Playgroud)