Python:两个时间戳之间的时间间隔返回负数

时间:2018-01-28 10:58:17

标签: python python-3.x datetime

我正在尝试在yx之间获得时差,它会以毫秒为单位给出-ve值。

from datetime import datetime
x = '2018-01-28 08:58:10.83'
y = '2018-01-28 08:58:10.144'

x_time = datetime.strptime(x, '%Y-%m-%d %H:%M:%S.%f') # 2018-01-28 08:58:10.830000
y_time = datetime.strptime(y, '%Y-%m-%d %H:%M:%S.%f') # 2018-01-28 08:58:10.144000

diff = y_time - x_time
duration_milliseconds = round(diff.total_seconds() * 1000)
print(duration_milliseconds)  # -686 

我的结果是-686,但我希望61。这里错误的是什么?

2 个答案:

答案 0 :(得分:1)

.83是时间戳2018-01-28 08:58:10.83的十进制值。此时间戳也可以写为2018-01-28 08:58:10.830,此值大于2018-01-28 08:58:10.144,就像.830大于.144一样。

答案 1 :(得分:0)

来自documentation(强调我的):

  

%f是C标准中格式字符集的扩展(但在datetime对象中单独实现,因此始终可用)。当与strptime()方法一起使用时,%f指令接受一到六位数字和右侧零打击垫

“正确”而不是“离开”。因此.83被视为您需要的.830

x = "2018-01-28 08:58:10.083"

%f应该表示以.开头的浮点部分,填充是从左边开始的:ex:0.1 == 0.10