2009-11-23 90 views
3

我有一個腳本(不是我自己的),它可以計算我的satreceiver中的電影長度。它顯示了長度分鐘:秒如何獲得小時:分鐘

我想有在小時:分鐘

我有什麼變化,使?

這是腳本的有關和平:

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

res = [ None ] 

我已經由3600而不是60分拿到了幾個小時,但不能得到分鐘...

在此先感謝

彼得

+1

嗨,彼得。你可以添加一個標籤,說明你正在使用什麼語言,所以我們不會在答案中出錯。謝謝! –

+0

一小時內有60分鐘。所以如果你知道有多少分鐘,只需將分鐘除以60即可,而且你有多少小時。 –

回答

8
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) 
+0

是的,這工作!解決了完整的Python-noob中的這個小問題。感謝大家! 彼得 – Peter

0

那麼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://stackoverflow.com/a/20291909/202168(這個問題的後續副本)

然而,如果你在一個時間字符串處理時區偏移,那麼你還需要處理負小時,在這種情況下,零填充在馬亭的答案不工作

例如,它會返回-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) 
8

您可以使用timedelta

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

不錯。我會添加:'str(timedelta(minutes = 100))[: - 3]'如果你不想顯示秒。 – J0ANMM

相關問題