关于python:微秒的时间差不能按预期工作

Time difference in microseconds not working as expected

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
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 - 以毫秒为单位的时间差对我不起作用

Python速度测试 - 时差 - 毫秒

没有运气。

我在这里做错了什么?


您链接的帖子的答案之一是:

Be aware that c.microseconds only returns the microseconds portion of the timedelta! For timing purposes always use c.total_seconds().

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

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


你没有计算微秒的差异。 相反,您发现时间差为34分钟,并询问该差异的微秒分量。 时差0:34:00。 在该图中,除分钟之外的每个组件都是0。

要查看此效果,请将此简单的跟踪代码插入到您的程序中:

1
2
3
print(result, type(result))
print(x, type(x))
print(y, type(y))

输出:

1
2
3
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并将其转换为微秒。 现在您已经看到了问题,我敢打赌您可以自行解决问题。:-)