У меня есть float 12634.0 как результат продолжительности. Я хочу преобразовать его в этот формат: Месяцы: Дни: Часы: Минуты: Секунды (00: 00: 03: 30: 34)

Как я могу этого добиться? Благодарность

-3
Xenophon Psichis 2 Янв 2018 в 18:45

2 ответа

Вы могли бы попробовать

import datetime
print (str(datetime.timedelta(seconds=12634))
1
Hannu 2 Янв 2018 в 15:55

Другое решение, если вам нужна дополнительная информация, например, недели:

import datetime

def time_in_sec(time_sec):

    delta = datetime.timedelta(seconds=time_sec)
    delta_str = str(delta)[-8:]
    hours, minutes, seconds = [int(val) for val in delta_str.split(":", 3)]
    weeks = delta.days // 7
    days = delta.days % 7
    return "{}:{}:{}:{}:{}".format(weeks, days, hours, minutes, seconds)


def time_in_sec2(seconds):

    WEEK = 60 * 60 * 24 * 7
    DAY = 60 * 60 * 24
    HOUR = 60 * 60
    MINUTE = 60

    weeks = seconds // WEEK
    seconds = seconds % WEEK
    days = seconds // DAY
    seconds = seconds % DAY
    hours = seconds // HOUR
    seconds = seconds % HOUR
    minutes = seconds // MINUTE
    seconds = seconds % MINUTE
    return "{}:{}:{}:{}:{}".format(weeks, days, hours, minutes, seconds)


def main():
    print(time_in_sec(12634.0))
    print(time_in_sec2(12634.0))

Результат:

0:0:3:30:34
0.0:0.0:3.0:30.0:34.0

Если вам не нужна информация вроде недель, просто удалите ее.

Вы можете принять решение 2 (time_in_sec2), если вам не нужны зависимости вроде

import datetime

0
bierschi 2 Янв 2018 в 16:03