我这里有一段(非我自己写的)脚本,用来计算我的卫星接收器中电影的长度。它以分钟:秒的形式显示长度。
我希望能够以小时:分钟的形式显示长度。
我需要做哪些修改?
这是相关的脚本代码:
if len > 0:
len = "%d:%02d" % (len / 60, len % 60)
else:
len = ""
res = [ None ]
我已经通过除以3600而不是60来获得小时数,但无法获得分钟数...谢谢提前。Peter
我这里有一段(非我自己写的)脚本,用来计算我的卫星接收器中电影的长度。它以分钟:秒的形式显示长度。
我希望能够以小时:分钟的形式显示长度。
我需要做哪些修改?
这是相关的脚本代码:
if len > 0:
len = "%d:%02d" % (len / 60, len % 60)
else:
len = ""
res = [ None ]
你可以使用timedelta。
from datetime import timedelta
str(timedelta(minutes=100))[:-3]
# "1:40"
str(timedelta(minutes=100))[:-3]
。 - J0ANMMhours = 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)
电影的秒数是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()
应该长成什么样子。如果你还是感到困惑,可以对取模运算符进行一些研究。这里有一个很好的答案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)