繁体   English   中英

如何获得时间:分钟

[英]How get hours:minutes

我有一个脚本(不是我自己的),它计算我的satreceiver中的电影长度。 它以分钟为单位显示长度:秒

我希望在几个小时内完成:分钟

我需要做些什么改变?

这是有关脚本的和平:

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

res = [ None ]

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

提前致谢

彼得

你可以使用timedelta

from datetime import timedelta
str(timedelta(minutes=100))[:-3]
# "1:40"
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)

那么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://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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM