如何获得时间:分钟

时间:2009-11-23 18:11:07

标签: python time formatting

我这里有一个脚本(不是我自己的),用来计算我的satreceiver中电影的长度。它以分钟:秒

显示长度

我想在小时:分钟

中拥有它

我必须做出哪些改变?

这是有关剧本的和平:

if len > 0:
    len = "%d:%02d" % (len / 60, len % 60)
else:
    len = ""

res = [ None ]

我已经把时间除以3600而不是60但是不能得分......

提前致谢

彼得

4 个答案:

答案 0 :(得分:15)

您可以使用timedelta

from datetime import timedelta
str(timedelta(minutes=100))[:-3]
# "1:40"

答案 1 :(得分:9)

hours = secs / 3600
minutes = secs / 60 - hours * 60

len = "%d:%02d" % (hours, minutes)

或者,对于更新版本的Python:

hours = secs // 3600
minutes = secs // 60 - hours * 60

len = "%d:%02d" % (hours, minutes)

答案 2 :(得分:1)

那么len电影中的秒数?这个名字不好。 Python已经使用了len这个词来代替其他东西。更改。

def display_movie_length(seconds):
    # the // ensures you are using integer division
    # You can also use / in python 2.x
    hours = seconds // 3600   

    # You need to understand how the modulo operator works
    rest_of_seconds = seconds % 3600  

    # I'm sure you can figure out what to do with all those leftover seconds
    minutes = minutes_from_seconds(rest_of_seconds)

    return "%d:%02d" % (hours, minutes)

您需要做的就是弄清楚minutes\_from\_seconds()应该是什么样子。如果您仍然感到困惑,请对模运算符进行一些研究。

答案 3 :(得分:0)

这里有一个很好的答案https://stackoverflow.com/a/20291909/202168(这个问题的后续副本)

但是如果你在日期时间字符串中处理时区偏移,那么你还需要处理负数小时,在这种情况下,Martijn的答案中的零填充不起作用

例如,它会返回-4:00而不是-04:00

要解决这个问题,代码会变得稍长一些,如​​下所示:

offset_h, offset_m = divmod(offset_minutes, 60)
sign = '-' if offset_h < 0 else '+'
offset_str = '{}{:02d}{:02d}'.format(sign, abs(offset_h), offset_m)