2014-10-02 6 views
3

초가있는 변수가 있으며 자세한 시간 형식으로 변환하고 싶습니다. 나는이 순간을 좋아한다.초를 읽을 수있는 형식 시간으로 변환

runTime = '%s Hours:Minutes:Seconds' % time.strftime("%H:%M:%S", time.gmtime(runTime)) 

출력 :

17:25:46 Hours:Minutes:Seconds 

내가 같은 형식의하고 싶은 : 그래서

:

17 Hours 25 Minutes 46 Seconds 

가 궁극적으로 내가 더 작은 값을 수 단축 싶습니다 값이 분 및 초인 경우

15 Minutes 5 Seconds 

하고 더 한 후 24 시간 일

1 Days 15 Hours 5 Minutes 1 Seconds 
+0

을 https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior – vminof

답변

0

이있는 경우 먼저 다음 분/초를 추가, 일/시간을 결정하는 단계로이 단계를 수행해야합니다.

import time 

current_time = time.gmtime() # Or whatever time. 
hours = int(time.strftime("%H", current_time)) 
days = hours/24 
hours = hours % 24 

time_string = "" 
if days > 0: 
    time_string += "%d Days " % days 
if hours > 0: 
    time_string += "%d Hours " % hours 

time_string += time.strftime("%M Minutes %S Seconds", current_time) 

직접 time.strftime의 첫 번째 인수에 여분의 단어를 배치 할 수 있습니다. %H:%M:%S은 필수 형식이 아닙니다. 그것은 문자열 형식과 훨씬 비슷합니다. 여기서 어디에서나 단어를 추가하고 원하는 위치에 인수가 나타날 수 있습니다.

7

당신은 사용해야하는 dateutil package 우수하고 다음 작업을하게 사소한 :

>>> from dateutil.relativedelta import relativedelta as rd 
>>> fmt = '{0.days} days {0.hours} hours {0.minutes} minutes {0.seconds} seconds' 
>>> print(fmt.format(rd(seconds=62745))) 
0 days 17 hours 25 minutes 45 seconds 

만이 아닌 제로인 해당 필드의 값을 보여줍니다 고급 예, 약간의 :

>>> intervals = ['days','hours','minutes','seconds'] 
>>> x = rd(seconds=12345) 
>>> print(' '.join('{} {}'.format(getattr(x,k),k) for k in intervals if getattr(x,k))) 
3 hours 25 minutes 45 seconds 
>>> x = rd(seconds=1234432) 
>>> print(' '.join('{} {}'.format(getattr(x,k),k) for k in intervals if getattr(x,k))) 
14 days 6 hours 53 minutes 52 seconds 
관련 문제