datetime.now() - date.now()返回-1天。

问题描述 投票:0回答:1

datetime给出了非常诡异的结果。

In:

tz = pytz.timezone('America/New_York') 
d1 = datetime.now(tz)

d2 = datetime.now(tz) + timedelta(seconds=0)

delta = d1-d2

print(delta, delta.seconds, delta.total_seconds(), sep="\n")

Out:

-1 day, 23:59:59.999930
86399
-7e-05

我试过用和不用时区,用和不用... timedelta(seconds = 0) 并得到了同样的结果。

当我这样做,

tz = pytz.timezone('America/New_York') 
d1 = datetime.now(tz)

d2 = d1 + timedelta(seconds=0)

delta = d1-d2

print(delta, delta.seconds, delta.total_seconds(), sep="\n")

我得到了0,如预期。我做了什么?

我导入如下(如果这可能是问题)。

from datetime import datetime, timedelta
import pytz

我读错了delta打印出来的数据,我没有意识到是 -1天+23: 59。糟糕。

python datetime pytz
1个回答
4
投票

你在调用 datetime.now() 两次。当然这两次通话之间有一定的时间间隔。

你的delta计算方法是反的。应该是这样的

delta = d2-d1
© www.soinside.com 2019 - 2024. All rights reserved.