我如何计算python中的时间浮点微秒?

时间:2017-09-16 08:23:25

标签: python

我想减去string类型时间

a = "2017-04-15 21:10:02.026"
b = "2017-10-15 10:09:57.321"

我想要a-b

请有人帮助我谢谢

3 个答案:

答案 0 :(得分:2)

您需要先将它们转换为datetime

from datetime import datetime

a = "2017-04-15 21:10:02.026"
b = "2017-10-15 10:09:57.321"

dt_a = datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f")
dt_b = datetime.strptime(b, "%Y-%m-%d %H:%M:%S.%f")

print dt_a - dt_b

这将显示:

-183 days, 11:00:04.705000

datetime.strptime()用于通过指定字符串的格式来将字符串转换为datetime。每个%告诉它日期/时间的每个部分在哪里。

在您的情况下,所需的格式如下:

%Y - 以十进制数字为世纪的年份。
%m - 月份为零填充十进制数 %d - 作为零填充十进制数的月中的某一天 %H - 小时(24小时制)作为零填充十进制数 %M - 分钟为零填充十进制数 %S - 第二个作为零填充十进制数 %f - 微秒数作为十进制数,左边为零填充。

减去两个datetime对象将返回timedelta个对象。通过此,您可以确定total_seconds()。 e.g。

result = dt_a - dt_b
print result.total_seconds()

答案 1 :(得分:0)

根据this,您可以这样做(请参阅链接文档中%的所有选项:

>>> from datetime import datetime
>>> a = "2017-04-15 21:10:02.026"
>>> b = "2017-10-15 10:09:57.321"
>>> oA = datetime.strptime(a,"%Y-%m-%d %H:%M:%S.%f")
>>> oB = datetime.strptime(b,"%Y-%m-%d %H:%M:%S.%f")
>>> oA - oB
>>> datetime.timedelta(-183, 39604, 705000)

根据this timedelta应该以这种方式返回(days, seconds, milliseconds)

答案 2 :(得分:0)

使用datetime如下:

import datetime


if __name__ == "__main__":
    a = "2017-04-15 21:10:02.026"
    b = "2017-10-15 10:09:57.321"
    a_time = datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f")
    b_time = datetime.datetime.strptime(b, "%Y-%m-%d %H:%M:%S.%f")
    print (b_time - a_time).total_seconds()

b_time - a_time创建一个timedelta对象,该对象具有多个属性,您可以找到here; total_seconds以秒为单位返回时差。