我正在尝试在y
和x
之间获得时差,它会以毫秒为单位给出-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
。这里错误的是什么?
答案 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
)