如何将毫秒转换为 minutes:seconds 输出?

How to convert milliseconds to minutes:seconds output?

我想转换 毫秒 并得到 2:00 输出。 它应该看起来像歌曲的持续时间。

我正在尝试使用此代码:

import datetime

seconds = milliseconds/1000
b = int((seconds % 3600)//60)
c = int((seconds % 3600) % 60)
dt = datetime.time(b, c)
print(dt)

>>> 02:30:00

你还有别的想法吗?或者也许我应该更改我的代码。

编辑: 我用下面的代码解决了这个问题

    ms = 194000
    seconds, ms = divmod(ms, 1000)
    minutes, seconds = divmod(seconds, 60)
    print(f'{int(minutes):01d}:{int(seconds):02d}')

如果您使用的是日期时间,则您正在寻找 .strftime() method!

"%M:%S"  # minutes:seconds

您可以在此处找到 table 格式代码:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes

不过,自己算一下可能更容易

>>> milliseconds  = 105000
>>> total_seconds = int(milliseconds / 1000)
>>> minutes       = int(total_seconds / 60)
>>> seconds       = int(total_seconds - minutes * 60)
>>> print("{}:{:02}".format(minutes, seconds))
1:45

b 是分钟,c 是秒。但是 datetime.time() 的参数是 hours, minutes, seconds。因此,您将分钟放在 hours 参数中,将秒放在 minutes 参数中。

使用

dt = datetime.time(0, b, c)
print(dt)
>>> 00:02:30

如果您不想要初始 00:,请使用

print(dt.strftime('%M:%S'))
>>> import datetime
>>> print(datetime.timedelta(milliseconds=3200))
0:00:03.200000

使用简单的 divmod 怎么样?这样,分钟 > 59 是可能的,不需要导入,例如

milliseconds = 86400001 # a day and a millisecond... long song.

seconds, milliseconds = divmod(milliseconds, 1000)
minutes, seconds = divmod(seconds, 60)

print(f'{int(minutes):02d}:{int(seconds):02d}.{int(milliseconds):03d}')
# 1440:00.001