복붙노트

[PYTHON] 파이썬 : 초를 hh로 변환 : mm : ss [duplicate]

PYTHON

파이썬 : 초를 hh로 변환 : mm : ss [duplicate]

int (초 수)를 다음 형식으로 변환하는 방법을 알려주십시오. mm : ss 또는 hh : mm : ss?

파이썬 코드 (그리고 가능한 경우 장고 템플릿?)로이 작업을 수행해야합니다.

대단히 감사합니다 ;-)

해결법

  1. ==============================

    1.나는 많은 대답들 중 어떤 것도 내가 "그것을 할 수있는 확실한 방법"(그리고 나는 심지어 네덜란드 인이 아니라고 생각한다)을 제공한다고 믿을 수 없다 ... -) - 24 시간 분량의 초 (86399 초, 구체적으로) :

    나는 많은 대답들 중 어떤 것도 내가 "그것을 할 수있는 확실한 방법"(그리고 나는 심지어 네덜란드 인이 아니라고 생각한다)을 제공한다고 믿을 수 없다 ... -) - 24 시간 분량의 초 (86399 초, 구체적으로) :

    >>> import time
    >>> time.strftime('%H:%M:%S', time.gmtime(12345))
    '03:25:45'
    

    Django 템플릿을 더 복잡하게 만드는 것은 시간 필터가 펑키 한 시간 형식 구문 (PHP에서 영감을 얻었습니다.)을 지원하고 datetime 모듈과 pytz와 같은 시간대 구현이 필요하기 때문에 데이터를 준비하는 것입니다. 예 :

    >>> from django import template as tt
    >>> import pytz
    >>> import datetime
    >>> tt.Template('{{ x|time:"H:i:s" }}').render(
    ...     tt.Context({'x': datetime.datetime.fromtimestamp(12345, pytz.utc)}))
    u'03:25:45'
    

    정확한 요구에 따라 앱에서이 형식 지정 작업에 대한 맞춤 필터를 정의하는 것이 더 편리 할 수 ​​있습니다.

  2. ==============================

    2.

    >>> a = datetime.timedelta(seconds=65)
    datetime.timedelta(0, 65)
    >>> str(a)
    '0:01:05'
    
  3. ==============================

    3.요청 된 내용과 예제를 사용하고 그가 지정하지 않은 사례가 처리되는 방법을 보여주는 코드 :

    요청 된 내용과 예제를 사용하고 그가 지정하지 않은 사례가 처리되는 방법을 보여주는 코드 :

    def format_seconds_to_hhmmss(seconds):
        hours = seconds // (60*60)
        seconds %= (60*60)
        minutes = seconds // 60
        seconds %= 60
        return "%02i:%02i:%02i" % (hours, minutes, seconds)
    
    def format_seconds_to_mmss(seconds):
        minutes = seconds // 60
        seconds %= 60
        return "%02i:%02i" % (minutes, seconds)
    
    minutes = 60
    hours = 60*60
    assert format_seconds_to_mmss(7*minutes + 30) == "07:30"
    assert format_seconds_to_mmss(15*minutes + 30) == "15:30"
    assert format_seconds_to_mmss(1000*minutes + 30) == "1000:30"
    
    assert format_seconds_to_hhmmss(2*hours + 15*minutes + 30) == "02:15:30"
    assert format_seconds_to_hhmmss(11*hours + 15*minutes + 30) == "11:15:30"
    assert format_seconds_to_hhmmss(99*hours + 15*minutes + 30) == "99:15:30"
    assert format_seconds_to_hhmmss(500*hours + 15*minutes + 30) == "500:15:30"
    

    아마도 int가 아닌 timedelta로 저장할 수 있습니다.하지만 이는 별개의 문제이며 timedelta는 실제로이 특정 작업을 더 쉽게 만듭니다.

  4. ==============================

    4.datetime 모듈을 읽었습니까?

    datetime 모듈을 읽었습니까?

    편집 / 업데이트 : SilentGhost의 대답에 대한 답변이 나와 있습니다. 이 답변이 마음에 들면 +1을하십시오 (또는 대신). 여기에 Reposted :

    >>> a = datetime.timedelta(seconds=65)
    datetime.timedelta(0, 65)
    >>> str(a)
    '0:01:05'
    
  5. ==============================

    5.간단한 나누기로 초 단위로 분과 시간을 계산할 수 있습니다.

    간단한 나누기로 초 단위로 분과 시간을 계산할 수 있습니다.

    seconds = 12345
    minutes = seconds // 60
    hours = minutes // 60
    
    print "%02d:%02d:%02d" % (hours, minutes % 60, seconds % 60)
    print "%02d:%02d" % (minutes, seconds % 60)
    

    // 여기에는 비단 정수가 나옵니다.

  6. ==============================

    6.divmod를 사용하면 정수 나누기의 다른 풍미에 면역됩니다.

    divmod를 사용하면 정수 나누기의 다른 풍미에 면역됩니다.

    # show time strings for 3800 seconds
    
    # easy way to get mm:ss
    print "%02d:%02d" % divmod(3800, 60)
    
    # easy way to get hh:mm:ss
    print "%02d:%02d:%02d" % \
        reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
            [(3800,),60,60])
    
    
    # function to convert floating point number of seconds to 
    # hh:mm:ss.sss
    def secondsToStr(t):
        return "%02d:%02d:%02d.%03d" % \
            reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
                [(t*1000,),1000,60,60])
    
    print secondsToStr(3800.123)
    

    인쇄물:

    63:20
    01:03:20
    01:03:20.123
    
  7. ==============================

    7.60으로 나눌 때 조심하십시오. 정수 사이의 구분은 정수를 반환합니다 -> 12/60 = 0입니다. 다음은 Python 2.6.2에서 복사하여 붙여 넣습니다.

    60으로 나눌 때 조심하십시오. 정수 사이의 구분은 정수를 반환합니다 -> 12/60 = 0입니다. 다음은 Python 2.6.2에서 복사하여 붙여 넣습니다.

    IDLE 2.6.2      
    >>> 12/60
    0
    >>> from __future__ import division
    >>> 12/60
    0.20000000000000001
    
  8. ==============================

    8.파이썬 사용자가 아니지만 모든 라이브러리가없는 가장 쉬운 방법은 다음과 같습니다.

    파이썬 사용자가 아니지만 모든 라이브러리가없는 가장 쉬운 방법은 다음과 같습니다.

    total   = 3800
    seconds = total % 60
    total   = total - seconds
    hours   = total / 3600
    total   = total - (hours * 3600)
    mins    = total / 60
    

    업데이트 된 코드, 감사합니다 sth

  9. ==============================

    9.파이썬이 날짜와 시간을 지원한다는 사실 외에도 (bigmattyh의 반응 참조), 몇 초에서 몇 분 또는 몇 시간을 찾는 것이 쉽습니다.

    파이썬이 날짜와 시간을 지원한다는 사실 외에도 (bigmattyh의 반응 참조), 몇 초에서 몇 분 또는 몇 시간을 찾는 것이 쉽습니다.

    minutes = seconds / 60
    hours = minutes / 60
    

    이제, 분 또는 초를 표시하려면 MOD를 60으로 변경하여 59보다 크지 않도록하십시오.

  10. ==============================

    10.이 작업을 많이해야하는 경우 하루에 몇 초 동안 가능한 모든 문자열을 미리 계산할 수 있습니다.

    이 작업을 많이해야하는 경우 하루에 몇 초 동안 가능한 모든 문자열을 미리 계산할 수 있습니다.

    try:
        from itertools import product
    except ImportError:
        def product(*seqs):
            if len(seqs) == 2:
                for s1 in seqs[0]:
                    for s2 in seqs[1]:
                        yield (s1,s2)
            else:
                for s in seqs[0]:
                    for p in product(*seqs[1:]):
                        yield (s,) + p
    
    hhmmss = {}
    i = 0
    for (h,m,s) in product(range(24),range(60),range(60)):
        hhmmss[i] = "%02d:%02d:%02d" % (h,m,s)
        i += 1
    

    이제는 초를 형식 문자열로 변환하는 것이 빠른 사전 찾기입니다.

    print hhmmss[12345]
    

    인쇄물

    '03:25:45'
    
  11. from https://stackoverflow.com/questions/1384406/python-convert-seconds-to-hhmmss by cc-by-sa and MIT license