2012-04-06 3 views
0

문자열을 분으로 변환 한 다음 모든 내용을 추가하여 문자열, 나는 이것을하는 데 어려움을 겪고있다.02:12, 03:45 ...의 값을 함께 목록에 추가하여 형식을 만듭니다. 시간 = 시간 : 분 : 초

I 원할 : '56:03' '', '' '1시 5분 3시 43분 32 02] =

TimeL :

는 I이 보유 목록을 가지고 이 분을 더하면 : 초를 합산 한 값을 시간 : mm : ss 형식으로 반환합니다. 그러나 값이 충분하지 않아 시간이 없으면 그 값은 mms : ss입니다.

지금까지 내가 할 수있는 것은 각각을 초 단위로 변환하여 추가하는 것이지만, 원하는 방식이 아니며, 어떻게해야하는지 알았습니다.

그래서 내 메서드는 초를 값으로 반환합니다. 3432 초입니다. 나는 그것이 몇 시간 : 분 : 초가 되길 원한다. 조금이라도 도움이된다면 누구나 감사드립니다. 다음

+1

[Python Time Seconds to h : m : s] 가능한 중복 (http://stackoverflow.com/questions/775049/python-time-seconds-to-hms) –

답변

1

사용 :

str(datetime.timedelta(seconds=3432)) 

이의 datetime 모듈을 수입해야합니다. 당신은 이미 초를 가지고 있으며 이것은시, 분, 초로 문자열로 변환 할 것입니다.

1

원하는 내용입니다. 1 분 = 60 초이므로 초를 60으로 나눕니다. 문제는 파이썬에서 60.0으로 나누어야 정확한 값 (실수 값)을 얻을 수 있다는 것입니다. 이 값을 얻으면 가장 낮은 정수 값 (math.floor)을 취합니다. 150 초는 2.5 분이므로 2 분 걸리고 120 초는 2 분, 150에서 30을 제거하십시오. 이것은 남은 초수입니다. sum이의 합을 계산합니다

total_secs = sum(getSeconds(time_str) for time_str in time_list) 

: 당신은 시간에 같은 추론 (60 분)

import sys 
import math 

def getSeconds(s): 
    l = s.split(":") 
    return int(l[0])*(60) + int(l[1]) 

def getTotalString(time_list): 
    total_secs = 0 
    for time_str in time_list: 
     total_secs += getSeconds(time_str) 

    total_mins = total_secs/60.0 
    mins = math.floor(total_mins) 
    secs = total_secs-mins*60 

    if mins<60: 
     return '%.2d:%.2d' % (mins, secs) 
    else: 
     hours = math.floor(mins/60.0) 
     mins = mins-60*hours 
     return '%.2d:%.2d:%.2d' % (hours, mins, secs) 

if __name__ == '__main__': 
    print getTotalString(sys.argv[1:]) 

파이썬에 한 줄에서 수행 할 수 초간의 합을 계산하는 방식을 적용 목록 (또는 반복자)의 숫자. 추가 할 숫자 또는 생성자 목록을 제공 할 수 있습니다. the number of seconds in each time string in the list

가능한 한 명확하고 가능한 한 유익하게 작성했으면 좋겠지 만 datetime 모듈의 간단한 솔루션을 사용할 수 있습니다.

업데이트 : 이것은 Python 2.x가 아닌 Python 3입니다. 따라서 예상대로 작동하지 않을 수도 있지만 생각은 동일하지만 구문이 다릅니다.

관련 문제