如何获取小时:分钟

9

我这里有一段(非我自己写的)脚本,用来计算我的卫星接收器中电影的长度。它以分钟:秒的形式显示长度。

我希望能够以小时:分钟的形式显示长度。

我需要做哪些修改?

这是相关的脚本代码:

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

res = [ None ]

我已经通过除以3600而不是60来获得小时数,但无法获得分钟数...谢谢提前。Peter

1
嗨,彼得。你能添加一个标签,说明你正在使用的编程语言吗?这样我们就不会在回答中犯错误了。谢谢! - Dean J
一个小时有60分钟。所以如果你知道有多少分钟,只需将分钟数除以60,就可以得到有多少小时了。 - Amir Afghani
4个回答

20

你可以使用timedelta。

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

3
好的。我会添加:如果您不想显示秒数,可以使用str(timedelta(minutes=100))[:-3] - J0ANMM

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

太好了,解决了!这个完全不懂Python的小问题已经解决了。谢谢大家! 彼得 - Peter

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() 应该长成什么样子。如果你还是感到困惑,可以对取模运算符进行一些研究。

0

这里有一个很好的答案https://dev59.com/_3nZa4cB1Zd3GeqPtbb_#20291909(这个问题的后来重复)

然而,如果你正在处理日期时间字符串中的时区偏移量,那么你还需要处理负小时,这种情况下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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接