如何在Python中将浮点数转换为时间格式 - 分钟,秒和微秒?

时间:2017-02-21 09:13:02

标签: python

我正在使用Python中的游泳结果(来自外部xls源),我需要将浮点数转换为时间格式 - 分钟,秒和微秒 - 来执行加法和减法运算。 我正在使用这个功能:

from datetime import timedelta
def format_result(result):
    seconds = int(result)
    microseconds = int((result * 1000000) % 1000000)
    output = timedelta(0, seconds, microseconds)
    return output

当给定输入为131.39时,输出应为0:02:11.390000,但实际上为0:02:11.389999。 如何在没有此精度错误的情况下正确转换?

2 个答案:

答案 0 :(得分:3)

您需要做的就是将其转换为UTC时间和format日期时间

>>> import datetime
>>> datetime.datetime.strftime(datetime.datetime.utcfromtimestamp(131.39), "%M:%S:%f")
'02:11:390000'

你需要做什么,

import datetime
def format_result(result):
    date = datetime.datetime.utcfromtimestamp(result)
    output = datetime.datetime.strftime(date, "%M:%S:%f")
    return output
print format_result(131.39)

希望这会有所帮助。

答案 1 :(得分:0)

我试过没有把它转换成int,它运行正常,因为你的表达它给了390000 .... !!

from datetime import timedelta
def format_result(result):
    seconds = int(result)
    microseconds = (result * 1000000) % 1000000
    output = timedelta(0, seconds, microseconds)
    return output

print format_result(131.39)