Как преобразовать миллисекунды в минуты: секунды на выходе?

Я хочу преобразовать миллисекунды и получить результат 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}')

Вы заботитесь о оставшихся долях секунды? Возможно, вы ищете функцию divmod, которая объединяет // и % в один шаг: divmod(130, 60) == (2, 10).   —  person Wiktor_B    schedule 07.05.2021

См. также:  «Нет модуля с именем '_portaudio': решение не найдено
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 4
  1. Wiktor_B

    А как насчет простого 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
    
  2. Wiktor_B

    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'))
    

    Ах, вот и вторая половина — реально они должны указать аргументы .time(minutes=foo, seconds=bar) во время создания! подпись класса person Wiktor_B; 07.05.2021

  3. Wiktor_B

    Если вы используете datetime, вы ищете .strftime() метод!

    "%M:%S"  # minutes:seconds
    

    Вы можете найти таблицу кодов форматов здесь: 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
    
  4. Wiktor_B
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: