【问题标题】:Convert duration format from float to Month:Days:Hours:Minutes:Seconds in python 3.x在python 3.x中将持续时间格式从浮点转换为月:天:小时:分钟:秒
【发布时间】:2018-01-02 15:45:59
【问题描述】:

我有一个浮点数 12634.0 作为持续时间的结果。 我想把它转换成这种格式: 月:日:时:分:秒 (00:00:03:30:34)

我怎样才能做到这一点?谢谢

【问题讨论】:

  • 您能否展示您的尝试,并描述它是如何失败的?
  • 持续时间以秒为单位。我相信这是您可能需要的唯一信息。

标签: python python-3.x duration


【解决方案1】:

你可以试试

import datetime
print (str(datetime.timedelta(seconds=12634))

【讨论】:

  • 这不会以您想要的格式打印月份和日期。如果这很重要,您需要遵循@bierschi:s 答案中的蛮力方法。这是一种快速而肮脏的解决方案,只需要一行代码就可以了。
  • 这确实不打印月份和日期,但还是谢谢
  • 不,它没有。这只是一件简单的事情,可能有用也可能没有帮助。如果您需要完全转换,则没有库函数可以做到这一点。您需要进行蛮力转换,手动将秒数拆分为更大的单位,然后组合并以所需格式显示。这可能有助于编写这样的函数:stackoverflow.com/questions/538666/…
【解决方案2】:

另一种解决方案,如果您需要几周等其他信息:

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

【讨论】:

  • 非常有帮助!谢谢!
猜你喜欢
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
相关资源
最近更新 更多