gpt4 book ai didi

python - 为什么 datetime.datetime.now() - datetime.datetime.now() 等于 datetime.timedelta(-1, 86399, 999974)?

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:28 25 4
gpt4 key购买 nike

考虑以下片段:

import datetime
print(datetime.datetime.now() - datetime.datetime.now())

在 x86_64 Linux 下的 Python 2.7.8 上,我得到 -1 天,23:59:59.999940。为什么会这样?

最佳答案

查看datetime.timedelta 文档:

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)

您有一个负的时间增量,并且归一化始终使用正数表示秒和微秒。

要存储负增量,那么只有 .days 属性可以存储负值,您最终得到 -1 天加正数秒和微秒:

>>> import datetime
>>> td = datetime.datetime.now() - datetime.datetime.now()
>>> print(td)
-1 day, 23:59:59.999988
>>> td
datetime.timedelta(-1, 86399, 999988)
>>> td.days
-1
>>> td.seconds
86399
>>> td.microseconds
999988
>>> (24 * 60 * 60) # 1 day in seconds
86400
>>> (24 * 60 * 60) - td.seconds
1
>>> 1000000 - td.microseconds
12

所以 timedelta 实际上表示 -12 微秒,但相对于 -1 天表示为 +86399 秒和 +999988 微秒。

关于python - 为什么 datetime.datetime.now() - datetime.datetime.now() 等于 datetime.timedelta(-1, 86399, 999974)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677673/

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