将float转换为hh:mm格式

Lia*_*hav 5 python time date python-3.x

我想打印一个以hh:mm格式作为字符串进行数学运算后得到的浮点值.目前我有:(在这种情况下的时间等于像9.888888888888886或09:50(我想要的))

    time = str(time)
    time = time.split(".")
    time[1] = float(time[1])
    time[1] *= 0.6
    time[1] = str(time[1])
Run Code Online (Sandbox Code Playgroud)

当我打印我使用

    str(time[0]) + ":" + time[1][:2]
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以持续达到这个效 使用更高级的输入,我的上述代码无法正常工作,并输出错误的时间.

Jon*_*nts 9

可选择使用datetime,你可以用简单的格式有位数学,例如:

result = '{0:02.0f}:{1:02.0f}'.format(*divmod(time * 60, 60))
Run Code Online (Sandbox Code Playgroud)

  • 它没有正确舍入,“time=0.999”变成“00:60”而不是“01:00” (2认同)

f.r*_*ues 9

使用 divmod 可以获得除法的余数和商。

minutes = 9.888888888888886*60
hours, minutes = divmod(minutes, 60)

print "%02d:%02d"%(hours,minutes)
Run Code Online (Sandbox Code Playgroud)

输出:

09:53
Run Code Online (Sandbox Code Playgroud)

如果你也想要秒数:

seconds = 9.888888888888886*60*60
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)

print "%02d:%02d:%02d"%(hours,minutes,seconds)
Run Code Online (Sandbox Code Playgroud)


fal*_*tru 6

使用datetime.timedelta

>>> import datetime
>>> datetime.timedelta(hours=9.888888888888886)
datetime.timedelta(0, 35600)
>>> str(datetime.timedelta(hours=9.888888888888886))
'9:53:20'
>>> str(datetime.timedelta(hours=9.888888888888886)).rsplit(':', 1)[0]
'9:53'
Run Code Online (Sandbox Code Playgroud)
>>> datetime.datetime.combine(datetime.date.today(), datetime.time()) + \
... datetime.timedelta(hours=9.888888888888886)
datetime.datetime(2014, 12, 16, 9, 53, 20)
>>> _.strftime('%H:%M')
'09:53'
Run Code Online (Sandbox Code Playgroud)