【问题标题】:datetime.now() - date.now() is returning -1 daysdatetime.now() - date.now() 返回 -1 天
【发布时间】:2020-10-07 22:10:07
【问题描述】:

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

在:

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")

输出:

-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

我读错了增量打印,我没有意识到它是 -1 天 + 23:59。哎呀。。

【问题讨论】:

  • 这太吓人了
  • 反转对象顺序:d2-d1
  • @Duckasaur:接受 Jonathon 的答案是正确的,不要试图通过编辑你的问题来回答。

标签: python datetime pytz


【解决方案1】:

您拨打了两次datetime.now()。当然,这两个调用之间经过了一些时间。

您的增量计算是倒退的。应该是:

delta = d2-d1

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多