代码之家  ›  专栏  ›  技术社区  ›  guijob

以微秒为单位的时间差未按预期工作[重复]

  •  1
  • guijob  · 技术社区  · 5 年前

    我试图获得两个日期时间之间的差异,但我不知道为什么在尝试获得微秒时得到0:

    from dateutil.parser import parse
    
    x = parse("2019-03-25T17:33:08.829-03:00")
    y = parse("2019-03-25T18:07:08.829-03:00")
    
    result = y - x
    print(result.microseconds) // prints 0
    

    Python - time difference in milliseconds not working for me Python speed testing - Time Difference - milliseconds

    没有运气。

    我做错什么了?

    2 回复  |  直到 5 年前
        1
  •  5
  •   mkrieger1    5 年前

    One of the answers 在你链接的帖子中,有一篇写道:

    请注意 c.microseconds 只返回timedelta的微秒部分!出于计时目的,始终使用 c.total_seconds()

    如果你想要微秒的部分,你还期望什么?两个日期的秒数的小数部分相等,因此差值为0。

    否则,请使用 result.total_seconds() * 1e6 + result.microseconds .

        2
  •  2
  •   Prune    5 年前

    你没有用微秒来计算差异。相反,您找到了34分钟的时间差,并要求得到该时间差的微秒分量。时差是 0:34:00 . 在这个数字中,每个组成部分 除了 分钟数为0。

    print(result, type(result))
    print(x, type(x))
    print(y, type(y))
    

    输出:

    2019-03-25 17:33:08.829000-03:00 <class 'datetime.datetime'>
    2019-03-25 18:07:08.829000-03:00 <class 'datetime.datetime'>
    0:34:00 <class 'datetime.timedelta'>
    

    你得走了 整个的 timedelta并将其转换为微秒。既然你看到了问题,我敢打赌你可以自己解决它。:-)