gpt4 book ai didi

Python 现在日期时间与现在日期时间的区别

转载 作者:太空狗 更新时间:2023-10-30 00:53:14 25 4
gpt4 key购买 nike

我遇到了一个问题,或者很可能反过来!不确定,想知道!在 python 的 datetime 库中,获取时间差,如下面的代码片段所示。

>>> import datetime
>>> datetime.datetime.now() - datetime.datetime.now()
datetime.timedelta(-1, 86399, 999958)
>>> tnow = datetime.datetime.now()
>>> datetime.datetime.now() - tnow
datetime.timedelta(0, 4, 327859)

我想了解为什么 datetime.datetime.now() - datetime.datetime.now() 在分配时将输出生成为 -1 天,86399 秒某些变量的当前时间和计算差异给出了所需的输出 0 天 4 秒

结果似乎有点困惑,如果有人能破解背后的原因会很有帮助

注意:我使用的是 Python 2.7

最佳答案

根据 timedelta object 的文档

If the normalized value of days lies outside the indicated range, OverflowError is raised.

Note that normalization of negative values may be surprising at first. For example:

>>> from datetime import timedelta
>>> d = timedelta(microseconds=-1)
>>> (d.days, d.seconds, d.microseconds)
(-1, 86399, 999999)

这对 python 2.7 和 3 都有效。

发生这种情况的原因很简单:

a , b = datetime.datetime.now(), datetime.datetime.now()
# here datetime.now() in a will be <= b.
# That is because they will be executed separately at different CPU clock cycle.

a - b
# datetime.timedelta(-1, 86399, 999973)

b - a
# datetime.timedelta(0, 0, 27)

获取正确的时差:

(tnow - datetime.datetime.now()).total_seconds()
# output: -1.751166

此答案提供了有关如何安全使用时间增量(处理负值)的更多信息 Link

关于Python 现在日期时间与现在日期时间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48882468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com