gpt4 book ai didi

python - (datetime.datetime.today()-datetime.datetime.today()).天给-1

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:24 30 4
gpt4 key购买 nike

我正在尝试这个 (datetime.datetime.today()-datetime.datetime.today()).days 给出 -1

并期待值 0 而不是我得到 -1。在这种情况下,我将结果加 1

谁能告诉我为什么?

最佳答案

timedelta 对象必须始终具有正数 秒和微秒;负增量的表达方式是使用负数天数。秒和微秒然后从那些负数天数的另一个方向计数。

datetime.datetime.today() 生成完整的日期和时间,以微秒为单位。第二次调用在几分之一秒后执行,减去这两个调用会得到一个负的时间增量。

因此,您会得到一个时间差为 -1 天的差值和一个正数的秒数几乎等于一整天,除了几分之一秒:

>>> import datetime
>>> datetime.datetime.today()
datetime.datetime(2017, 2, 21, 7, 27, 43, 523202)
>>> datetime.datetime.today() - datetime.datetime.today()
datetime.timedelta(-1, 86399, 999990)

注意生成的 timedelta 对象中的 86399 秒和 999990 微秒。差异不是一整天,只是 10 微秒。

如果您需要“绝对”数字,请使用 timedelta.total_seconds() method :

>>> (datetime.datetime.today() - datetime.datetime.today()).total_seconds()
-8e-06

再将其除以 86400 得到天数:

>>> int((datetime.datetime.today() - datetime.datetime.today()).total_seconds() / 86400)
0
>>> int((datetime.datetime.today() - datetime.timedelta(days=2, seconds=10) - datetime.datetime.today()).total_seconds() / 86400)
-2

或者,当 secondsmicroseconds 为非零:

td = datetime.datetime.today() - datetime.datetime.today()
days = td.days + (1 if td.seconds or td.microseconds else 0)

关于python - (datetime.datetime.today()-datetime.datetime.today()).天给-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42361050/

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