我这里有一个脚本(不是我自己的),用来计算我的satreceiver中电影的长度。它以分钟:秒
显示长度我想在小时:分钟
中拥有它我必须做出哪些改变?
这是有关剧本的和平:
if len > 0:
len = "%d:%02d" % (len / 60, len % 60)
else:
len = ""
res = [ None ]
我已经把时间除以3600而不是60但是不能得分......
提前致谢
彼得
答案 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)